In February 2024, the StackExchange.Redis community fixed a bug that causes timeout errors. This bug occurs when a StackExchange.Redis client accesses a Tair (Redis OSS-compatible) instance in proxy mode and uses the multiple database (DB) feature. To resolve this issue, upgrade your StackExchange.Redis client to version 2.7.20 or later.
Details
Scope of impact
Timeout errors occur when all of the following conditions are met:
The StackExchange.Redis client version is earlier than 2.7.20.
The Tair instance uses cluster architecture with proxy mode or read/write splitting architecture.
The multiple DB feature is used, which involves running the SELECT command.
Error examples
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 databaseCause
Open-source Redis Cluster does not support multiple databases. As a result, you cannot run the SELECT command after migrating from a primary/standby architecture to a cluster architecture. However, the proxy mode of Tair (Redis OSS-compatible) supports multiple databases. This mode allows you to use the SELECT command to switch between different databases in a cluster architecture or a read/write splitting architecture. This feature enables a smoother upgrade from a standalone version to a cluster or read/write splitting architecture. For more information, see Tair Proxy feature overview.
Versions of StackExchange.Redis earlier than 2.7.20 incorrectly identify the proxy node of Tair as a standard cluster node. This causes the SELECT command to fail. This issue is fixed in StackExchange.Redis version 2.7.20.
Resolution
Upgrade StackExchange.Redis to version 2.7.20 or later.