大厂都是怎么做Redis重试的?( 二 )


  • retryAttempts:重试次数,默认为 3 。
  • retryInterval:重试间隔,默认为 1,500 毫秒 。
重试示例如下:
Config config= new Config;
config.useSingleServer
.setTimeout(1000)
.setRetryAttempts(3)
.setRetryInterval(1500) //ms
.setAddress("redis://127.0.0.1:6379");
RedissonClient connect = Redisson.create(config);
5 StackExchange.Redis
StackExchang.Redis 客户端目前仅支持重试时连接 , 重试示例如下:
varconn = ConnectionMultiplexer.Connect("redis0:6380,redis1:6380,connectRetry=3");
说明
如需实现 API 级别的重试策略,请参见 Polly 。
6 Lettuce
Lettuce 客户端未提供在命令超时后重试的参数 , 但是您可以通过下述参数来实现命令重试策略:
  • at-most-once execution:命令最多执行 1 次 , 即 0 次或 1 次 , 如果连接断开并重新连接,命令可能会丢失 。
  • at-least-once execution(默认):最少成功执行 1 次,即可能会在执行时进行多次尝试,保障最少成功执行 1 次 。使用此策略时,如果 TAIr 实例发生了主备切换,此时客户端可能累积了较多的重试命令,主备切换完成后可能会引发 Tair 实例的 CPU 使用率激增 。
说明
更多信息,请参见 Client-Options( https://Github.com/lettuce-io/lettuce-core/wiki/Client-Options) 和 Command execution reliability( https://github.com/lettuce-io/lettuce-core/wiki/Command-execution-reliability) 。
重试示例:
clientOptions.isAutoReconnect? Reliability.AT_LEAST_ONCE: Reliability.AT_MOST_ONCE;
参考:
  • https://help.aliyun.com/zh/redis/use-cases/retry-mechanisms-for-redis-clients
  • 通过客户端程序连接 Redis
  • 客户端程序 TLS(SSL)加密连接 Redis
END

【大厂都是怎么做Redis重试的?】


推荐阅读