2024年02月,StackExchange.Redis社区修复了一个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功能,用户在从主备架构变配至集群架构后,无法执行SELECT命令。而云数据库 Tair(兼容 Redis)的代理模式支持多DB功能。通过代理模式,您可以在集群架构、读写分离架构中使用SELECT命令,切换至其他DB。该功能可以帮助您更平滑地从单机版升级至集群架构或读写分离架构,更多信息请参见Redis Proxy特性说明。
StackExchange.Redis 2.7.20(不包含)之前的版本在识别阿里云Tair的代理节点时,将其识别为Cluster,从而导致SELECT命令无法执行,该问题已经在StackExchange.Redis 2.7.20版本进行了修复。
解决方案
将StackExchange.Redis升级至2.7.20及以上版本。
相关文档
文档内容是否对您有帮助?