may*_*ats 5 java redis jedis redisson redis-cluster
我们有一个用于Redis的集群配置用作缓存.现在由于写入master和从slave(与其他数据库)读取的正常模式,我们正在尝试使用Redis集群执行相同的操作.
经过一番调查后,我们发现redis,jedis和Spring Data Redis都没有支持Redis客户端(在java中).我们似乎找到了一些解决方法,但它似乎很难看,现在我在想它是否值得?
这是我的用例
考虑到这一点,我有以下问题:
非常感谢任何帮助(博客,案例研究,建议).
你对奴隶读书的期望是什么?
从奴隶那里读取它是可能的和通常的模式,但它带有一组效果.
引自http://redis.io/topics/cluster-spec#scaling-reads-using-slave-nodes:
通常,从节点会将客户端重定向到给定命令中涉及的散列槽的权威主节点,但是,客户端可以使用从属节点来使用该
READONLY命令扩展读取.
READONLY告诉Redis群集从属节点客户端可以读取可能过时的数据,并且对运行写入查询不感兴趣.
Jedis没有内置支持从主节点以外的其他节点读取.Redisson和生菜为Master和Slave读取提供内置支持.Redisson在内部使用平衡器(随机,循环,加权)来分配操作,生菜提供偏好驱动(仅限主,主要首选,从属,最近)方法.
Spring Data Redis建立在Jedis和生菜之上,但不提供从奴隶读取的通用功能.
一个好的经验法则是使用从属设备来获取可用性,而不是使用性能.
像 redisson 这样的 Redis 客户端(Java 中的)都不支持此功能
Redisson提供了readMode可用于集群模式配置的设置。可用值为:
SLAVE- 从从节点读取,
MASTER- 从主节点读取,
MASTER_SLAVE- 从主节点和从节点读取
你需要利用SLAVE价值。
配置示例:
Config config = new Config();
config.useClusterServers()
.setReadMode(ReadMode.SLAVE)
.addNodeAddress(...);
Redisson redisson = Redisson.create(config);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6083 次 |
| 最近记录: |