我需要在Java中使用Redis作为数据源,所以我决定使用代码:
public class RedisService {
private static final Jedis jedis = new Jedis("host",6400);;
public static Device getDevice(String key) {
// Do something use redis.
return null;
}
}
我认为服务器会自动初始化Jedis(Redis API for Java),这是使用Jedis的好方法吗?
答案 0 :(得分:1)
看看我们如何使用Jedis:
通过传递主机和端口信息创建单例org.springframework.data.redis.connection.jedis.JedisConnectionFactory
实例
通过将连接工厂传递给它来创建单例org.springframework.data.redis.core.RedisTemplate
实例
仅供您参考,这里是执行相同的弹簧代码,您可以使用如果您正在使用spring,则可以使用java代码创建相同的
<!-- Create Factory -->
<bean id="jedisFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" >
<property name="hostName" value="localhost" />
<property name="port" value="6370" />
<property name="timeout" value="5000" />
</bean>
<!-- Create Redis Template -->
<bean id="redisRemplate" class="org.springframework.data.redis.core.RedisTemplate" >
<property name ="connectionFactory" ref="jedisFactory" />
</bean>
<!-- Your Service class -->
<bean id="serviceClass" class="RedisService" >
<property name ="redisTemplate" ref="redisRemplate" />
</bean>
public class RedisService
{
private final RedisTemplate redisTemplate = /* get from store or inject using spring */;
public static Device getDevice(String key) {
// Do something use Redis.
return null;
}
}
答案 1 :(得分:0)
正如Santosh Joshi试图解释的那样:最好使用JedisFactory。您的单身人士Jedis可能因网络,过载等而“死亡”......您将不得不重新启动应用程序以获得与Redis的新连接。
为了解决这个问题,你可以定义一个Jedis Pool,如果你不想使用Spring(Santosh的解决方案所基于的),你可以使用Jedis提供的JedisPool类。然后,您可以将其定义为单例(例如静态final或通过Spring)并从中获取Jedis实例。
由于它是一个池,你可以一次获得超过1个与Redis的连接(你可以配置它),并且它支持处理断开的连接:它会在一个死的时候创建新的新的Jedis。