Refresh

This website github-wiki-see.page/m/LuBu0505/My-Code/wiki/%E3%80%90Azure-Redis-%E7%BC%93%E5%AD%98%E3%80%91%E5%BD%93%E4%BD%BF%E7%94%A8Azure-Redis-%E9%9B%86%E7%BE%A4%E6%9C%8D%E5%8A%A1%E6%97%B6%E5%80%99%EF%BC%8C%E5%8F%91%E7%94%9F%E4%BA%86Moved%E7%9A%84%E5%87%A0%E7%82%B9%E5%88%86%E6%9E%90 is currently offline. Cloudflare's Always Online™ shows a snapshot of this web page from the Internet Archive's Wayback Machine. To check for the live version, click Refresh.

【Azure Redis 缓存】当使用Azure Redis 集群服务时候,发生了Moved的几点分析 - LuBu0505/My-Code GitHub Wiki

问题描述

当使用Azure Redis 集群服务时候,发生了Moved的几点分析

问题分析

1.   关于 Moved 问题,原因有可能是内存碎片整理,从而引起Redis发生failover。

2.   内存碎片多数情况是由于key值较大导致的,同时内存使用率较高也会影响内存碎片,从可以根据Redis的Memory指标判断(Used memory RSS比Used memory高不少),由于内存碎片会降低Redis的可用性以及Redis本身内存的不足,所以服务端会在碎片率较大的时候选择整理,该动作会导致failover,而此时客户端就会有moved的报错,原因在于切换前的master被关闭,发生failover。

3.  在Redis进行缩放操作(scale out) 期间,客户端也会出现Moved异常。

4.  关于timeout,可以从慢指令(slowlog)中发现执行超时的均为eval执行lua脚本时超时。执行eval通常是在事务中执行,且从堆栈上看出执行了exists命令,目的是否是为了加分布式锁呢?由于这个命令时间复杂度为O(N),所以建议使用 SCAN 代替该操作。

5.  当内存使用率较高的情况,可以参考以下几个: