我正在使用 Spring 2.1.1 和 Redis 4.0.1 。我已经配置了两台节点计算机,其中一台使用IP:192.168.20.40
进行主配置,另一台使用IP:192.168.20.55
进行从属配置。我在两个系统上使用jedis(不使用spring-jedis)运行Springboot应用程序,发生了不同的情况-
@Bean
public JedisSentinelPool jedisSentinelPool() {
Set<String> sentinels=new HashSet<>();
sentinels.add("192.168.20.40:26379");
sentinels.add("192.168.20.55:26379");
JedisSentinelPool jedisSentinelPool=new JedisSentinelPool("mymaster", sentinels);
return jedisSentinelPool;
}
在另一台服务器(192.168.20.33)上运行应用程序时,redis服务器托管在“ IP:192.168.20.40”和“ IP:192.168.20.55”上,那么我的应用程序无法获取jedis对象从哨兵池-
public String addToCache(@PathVariable("cacheName") String cacheName, HttpEntity<String> httpEntity, @PathVariable("key") String key) {
try (Jedis jedis = jedisPool.getResource();) {
long dataToEnter = jedis.hset(cacheName.getBytes(), key.getBytes(), httpEntity.getBody().getBytes());
if (dataToEnter == 0)
log.info("data existed in cache {} get updated ",cacheName);
else
log.info("new data inserted in cache {}",cacheName);
} catch (Exception e) {
System.out.println(e);
}
return httpEntity.getBody();
}
任何输入都是可观的。
答案 0 :(得分:0)
能否请您检查一下redis配置文件(redis.conf)。默认情况下,它应启用只读模式。您需要将只读模式更改为false。