[英]Should I read from a Redis Cluster slave?
我們有一個Redis集群配置用作緩存。 現在,由於寫入主機和從機讀取(與其他數據庫)的正常模式,我們正在嘗試對Redis集群執行相同的操作。
經過一些調查,我們發現像redisson,jedis和Spring Data Redis這樣的Redis客戶端(在Java中)均不支持此功能。 我們似乎已經找到了解決方法,但是看起來很丑,現在我在考慮是否值得?
這是我的用例
考慮到這一點,我有以下問題:
任何幫助(博客,案例研究,建議)將不勝感激。
您對從屬讀取的期望是什么?
可以從奴隸那里讀取一種通常的模式 ,但是它帶有一組效果。
從http://redis.io/topics/cluster-spec#scaling-reads-using-slave-nodes引用:
通常,從節點會將客戶端重定向到給定命令所涉及的哈希槽的權威主機,但是,客戶端可以使用從節點來使用
READONLY
命令擴展讀取。
READONLY
告訴Redis Cluster從屬節點,客戶端可以讀取可能過時的數據,並且對運行寫查詢不感興趣。
Jedis沒有內置支持可讀取除主節點以外的其他節點。 Redisson和lettuce為“主”和“從”讀取提供內置支持。 Redisson內部使用平衡器(隨機,循環,加權)來分發操作,生菜提供了偏好驅動(僅Master,Master首選,slave,最接近)的方法。
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.