gpt4 book ai didi

java与来自多个应用程序实例的redis一起工作

转载 作者:可可西里 更新时间:2023-11-01 11:00:54 24 4
gpt4 key购买 nike

我的目标是使用来自多个应用程序实例(读写访问)的 Redis 服务器的一般实例。我需要它在多个 Web 应用程序服务器之间共享 Web session ID 和 session 元信息。

当只有一个 Web 应用程序实例启动时,一切正常,但是当第二个实例初始化时,数据库被刷新,因此第一个应用程序插入的数据消失了。我尝试了两种建立连接的方式:
带 Spring

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"/>

和绝地武士

    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));

但在这两种变体中,我都遇到了同样的问题,即当与应用程序的第二个实例建立连接时,数据库会被刷新。在这种情况下,redis-server 似乎无法正常工作。我做错了什么?

最佳答案

我没有spring redis模板的经验,但是你的jedis代码不可能导致这个问题。redis-server 也不可能自动刷新数据库。唯一可能的原因是您的代码在特殊条件下刷新数据库。请尝试重启您的第一个应用程序实例,看看会发生什么。

关于java与来自多个应用程序实例的redis一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22689041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com