Мое приложение использует ElastiCache на AWS для целей кэширования.Наша текущая настройка использует базовый кластер Redis без шардинга и отработки отказа.Теперь нам нужно перейти к кластерному Redis Elastic Cache с включенным шардингом, аварийным переключением и т. Д.Создать новый кластер в AWS было непросто, но мы немного растеряны, как изменить наш Java-код для чтения и записи из кластера.
Текущая реализация - инициализация JedisPool
.
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(100);
jedisPoolConfig.setMaxIdle(10);
jedisPoolConfig.setMaxWaitMillis(50);
jedisPoolConfig.setTestOnBorrow(true);
String host = "mycache.db8e1v.0001.usw2.cache.amazonaws.com";
int port = 6379;
int timeout = 50;
JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout)
Объект Jedis заимствуется из пула каждый раз, когда нам нужно выполнить операцию
Jedis jedis = JedisPool.getResource();
Новая реализация будет
JedisPoolConfig jedisPoolConfig = ...
HostAndPort hostAndPort = new HostAndPort(host, port);
jedisCluster = new JedisCluster(Collections.singleton(hostAndPort), jedisPoolConfig);
Вопрос: в документации говорится, что JedisClusterдолжен использоваться вместо джедаев (не JedisPool).Означает ли это, что мне нужно создавать и уничтожать объект JedisCluster в каждом потоке.Или я могу повторно использовать тот же объект, и он будет обрабатывать поток безопасности?Когда я тогда точно закрою JedisCluster?В конце заявки?