2024年02月,StackExchange.Redis社區(qū)修復了一個Bug:在使用StackExchange.Redis客戶端訪問代理(Proxy)模式的云數據庫 Tair(兼容 Redis)實例時,如果使用了多數據庫(Database,DB)功能,會出現超時報錯。請將StackExchange.Redis升級至2.7.20及以上版本,可解決該問題。
詳細信息
影響范圍
當同時滿足以下三種情況時,會出現超時報錯:
StackExchange.Redis客戶端版本低于2.7.20(不包含)。
Tair實例為集群架構代理模式或讀寫分離架構。
使用多DB功能,即使用了SELECT命令。
報錯示例
1. StackExchange.Redis.RedisTimeoutException: Timeout performing xxx (5000ms), inst: 0, qu: 0, qs: 0, aw: False, rs: ReadAsync, ws: Idle, in: 0, in-pipe: 0, out-pipe: 0, serverEndpoint: XX.XX.XX.XX:6379, mgr: 10 of 10 available, clientName: 67c80fdab92d, PerfCounterHelperkeyHashSlot: 11235, IOCP: (Busy=0,Free=1000,Min=12,Max=1000), WORKER: (Busy=18,Free=32749,Min=12,Max=32767), v: xx.y.xx.xxx (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts)
2. Multiple databases are not supported on this server; cannot switch to database
原因描述
開源Redis集群不支持多DB功能,用戶在從主備架構變配至集群架構后,無法執(zhí)行SELECT命令。而云數據庫 Tair(兼容 Redis)的代理模式支持多DB功能。通過代理模式,您可以在集群架構、讀寫分離架構中使用SELECT命令,切換至其他DB。該功能可以幫助您更平滑地從單機版升級至集群架構或讀寫分離架構,更多信息請參見Redis Proxy特性說明。
StackExchange.Redis 2.7.20(不包含)之前的版本在識別阿里云Tair的代理節(jié)點時,將其識別為Cluster,從而導致SELECT命令無法執(zhí)行,該問題已經在StackExchange.Redis 2.7.20版本進行了修復。
解決方案
將StackExchange.Redis升級至2.7.20及以上版本。
相關文檔
文檔內容是否對您有幫助?