Java Redis:我能把绝地实例初始化为静态的最终场吗?
我需要使用Redis作为Java中的数据源,因此我决定使用以下代码:Java Redis:我能把绝地实例初始化为静态的最终场吗?,java,redis,jedis,Java,Redis,Jedis,我需要使用Redis作为Java中的数据源,因此我决定使用以下代码: public class RedisService { private static final Jedis jedis = new Jedis("host",6400);; public static Device getDevice(String key) { // Do something use redis. return null; } } 我以为服务器会
public class RedisService {
private static final Jedis jedis = new Jedis("host",6400);;
public static Device getDevice(String key) {
// Do something use redis.
return null;
}
}
我以为服务器会自动初始化绝地(Redis API for Java),这是使用绝地的好方法吗?看看我们是如何使用绝地的:
org.springframework.data.redis.connection.jedis.JedisConnectionFactory
实例org.springframework.data.redis.core.RedisTemplate
实例来创建它<!-- 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;
}
}
公共类再贴现服务
{
私有最终RedisTemplate RedisTemplate=/*使用spring从存储区获取或注入*;
公共静态设备getDevice(字符串键){
//用Redis做点什么。
返回null;
}
}
正如桑托什·乔希试图解释的那样:最好使用绝地工厂。你的绝地武士可能会因为网络、过载等原因而“死亡”。。。您必须重新启动应用程序才能与Redis建立新连接
为了解决这个问题,你可以定义一个绝地武士池,如果你不想使用Spring(Santosh的解决方案就是基于Spring),你可以使用绝地武士提供的JedisPool类。然后,您可以将其定义为一个单例(例如,静态final或通过Spring)并从中获取绝地实例
由于它是一个池,你一次可以连接到Redis超过1个(你可以配置),并且它支持处理断开的连接:当一个绝地死了,它会创造新的绝地