Джедаи ведут себя неожиданно с несколькими стражами в редисе - PullRequest
0 голосов
/ 31 декабря 2018

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

    любой ввод будет заметен.

1 Ответ

0 голосов
/ 31 декабря 2018

Не могли бы вы проверить свой конфигурационный файл redis (redis.conf).По умолчанию должен быть включен режим только для чтения.Вам нужно изменить режим только для чтения на false.

...