我的目标是从几个应用程序实例(读写访问)处理Redis服务器的一般实例。我需要它在几个Web应用程序服务器之间共享Web会话ID和会话元信息。
当只有一个Web应用程序实例启动时,一切正常,但是当第二个实例初始化时,db被刷新,因此第一个应用程序插入的数据消失了。我尝试了两种连接建立方式:
带弹簧
ApplicationContext context = new ClassPathXmlApplicationContext(
config.getString(Constants.REDIS_CONFIG_FILE));
this.redisTemplate = (RedisTemplate) context.getBean("redisTemplate");
<bean id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:use-pool="true" p:host-name="${oiosaml-sp.sessionhandler.redis.url}"
p:port="${oiosaml-sp.sessionhandler.redis.port}"/>
<!-- redis template definition -->
<bean id="redisTemplate"
class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnectionFactory"/>
和jedis
String redisUrl = config.getString(Constants.REDIS_URL);
String redisPort = config.getString(Constants.REDIS_PORT);
if (redisUrl == null || redisPort == null) {
throw new IllegalArgumentException(
PROPERTY_IS_NOT_SET_ERROR_MESSAGE);
}
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(MAX_CONNECTION_AMOUNT);
this.pool = new JedisPool(poolConfig, redisUrl,
Integer.parseInt(redisPort));
但是在这两种变体中我都有同样的问题,即在建立第二个app实例的连接时刷新db。看起来redis-server在这种情况下无法正常工作。我做错了什么?
答案 0 :(得分:0)
我没有使用spring redis模板,但是你的jedis代码不可能导致这个问题。 redis-server也不可能刷新db auto。 唯一可能的原因是你的代码冲洗db特殊镇静。 请尝试重新启动您的第一个应用实例,看看发生了什么。