Pra*_*oor 4 jedis amazon-elasticache
我的应用程序使用 AWS 上的 ElastiCache 进行缓存。我们当前的设置使用基本的 Redis 集群,没有分片或故障转移。我们现在需要迁移到启用了分片、故障转移等的集群 Redis 弹性缓存。在 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)
Run Code Online (Sandbox Code Playgroud)
每次我们需要执行操作时,都会从池中借用 Jedis 对象
Jedis jedis = JedisPool.getResource();
Run Code Online (Sandbox Code Playgroud)
新的实施将是
JedisPoolConfig jedisPoolConfig = ...
HostAndPort hostAndPort = new HostAndPort(host, port);
jedisCluster = new JedisCluster(Collections.singleton(hostAndPort), jedisPoolConfig);
Run Code Online (Sandbox Code Playgroud)
问题:文档说 JedisCluster 将用于代替 Jedis(而不是 JedisPool)。这是否意味着我需要在每个线程中创建和销毁一个 JedisCluster 对象。或者我可以重用同一个对象,它会处理线程安全吗?我什么时候完全关闭 JedisCluster 呢?在申请结束时?
在JedisCluster保持内部JedisPool为集群中的每个节点s。
这是否意味着我需要在每个线程中创建和销毁一个 JedisCluster 对象。或者我可以重用同一个对象,它会处理线程安全吗?
您可以重复使用相同的对象。
我什么时候完全关闭 JedisCluster 呢?在申请结束时?
是的。
| 归档时间: |
|
| 查看次数: |
2719 次 |
| 最近记录: |