Я использую Spring 2.1.1 и Redis 4.0.1 .Я настроил два компьютера узла: один с IP:192.168.20.40
с главной конфигурацией, а другой с IP:192.168.20.55
с ведомой конфигурацией.Я запускаю приложение Springboot с использованием jedis (не используя spring-jedis) на двух системах, возникают разные условия -
@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;
}
- При запуске приложения на главном узле (redis, сконфигурированном с master) данные вводятсяв кэше.
- При запуске приложения на подчиненном узле (redis, настроенный с ведомым устройством), произошло исключение - (i.) Я могу получить объект jedis из пула часовых, но не могу сохранить данные в redis, за исключением"redis.clients.jedis.exceptions.JedisDataException: READONLY Нельзя писать против ведомого только для чтения."
При запуске приложения на другом сервере (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();
}
любой ввод будет заметен.