-
GEODIST返回null或0主因是两个member不在同一key的Geo集合中;必须同属一个SortedSet,且需显式指定单位(m/km/mi/ft),member名含空格须加引号,跨key计算不支持。319 收藏 -
AOF重写内存暴增主因是fork的Copy-on-Write机制触发页拷贝+重写缓冲区累积;可通过infomemory差值、日志、aof_pending_rewrite交叉定位;缓解需停自动触发、手动完成重写,并调优auto-aof-rewrite-percentage等参数缩短重写时长。305 收藏 -
Redis集群选举必须过半数Master同意,因其采用类Raft共识机制,要求至少(N/2+1)个在线Master投票通过,以防网络分区导致脑裂和数据不一致。303 收藏 -
先看INFOCPU中used_cpu_sys是否单独飙升,若是则为连接层压力;若user和sys同步涨,再查cluster中migrating_slots/importing_slots是否非零,并结合客户端重试日志与抓包定位根因。292 收藏 -
allkeys-lru可能导致主线程卡顿,因其在内存达maxmemory时需同步遍历键空间淘汰key,在千万级实例下耗时数十毫秒;启用lazyfree-lazy-evictionyes可将释放操作异步化,显著降低延迟。289 收藏 -
应先用EXISTS检查key存在,再用TYPE校验类型是否为string,因GET对非string类型会直接报错且无法捕获;TYPE返回值严格区分大小写和拼写,须用==全等比较。288 收藏 -
Redis连接数暴涨时,盲目调大maxclients会掩盖问题甚至引发OOM;真实瓶颈在系统级限制、连接池泄漏、僵尸连接及缺乏网络层防护。279 收藏 -
无盘复制解决了传统主从全量同步中主节点fork+磁盘写入和从节点落盘加载的双重IO瓶颈;它跳过主节点落盘,由子进程直接通过socket发送RDB流,规避磁盘寻道与IO竞争。270 收藏 -
AOF重写加剧SSD寿命损耗,因其每次均全量生成新文件并原子替换,引发高频页擦除与搬移(写放大);频繁触发(如每小时2–3次)使SSD磨损加速,实测寿命比纯RDB缩短30%+。265 收藏 -
用SETBIT而非SET存在线状态,因位图内存仅约12.5MB(1亿用户),支持秒级统计与集合运算;需确保用户ID为非负整数、key带日期并设过期,用BITFIELD批量操作,BITCOUNT统计时注意写入逻辑与精度。261 收藏 -
ZREVRANK返回nil最常见的原因是key不存在或member不在ZSet中;它只对已存在的member生效,且返回0-based排名。260 收藏 -
哨兵通过“客观下线”(ODOWN)判断主节点真挂了:单个哨兵连不上仅为主观下线(SDOWN),需至少quorum个哨兵达成一致才触发ODOWN;哨兵间用SENTINELis-master-down-by-addr命令确认,非心跳广播,网络分区可能导致结论不一。244 收藏 -
布隆过滤器必须前置到请求入口,如Web中间件或API网关,在接触Redis或数据库前完成校验;冷启动需预热合法ID,误判率宜设为1%;空值缓存须存"NULL"字符串并设5–300秒短过期;参数校验需在网关/Controller层强校验;需监控空值占比与误判率并告警。228 收藏 -
延迟双删删的是第一次更新前删缓存、第二次更新DB后延迟再删缓存;前者防旧缓存命中,后者防主从同步期间脏读写入缓存。223 收藏 -
使用布隆过滤器防护缓存穿透是因为它能快速判断元素是否可能存在,拦截不存在的请求,保护数据库。Redis布隆过滤器通过低内存占用高效判断元素存在性,成功拦截无效请求,减轻数据库压力。尽管存在误判率,但这种误判在缓存穿透防护中是可接受的。218 收藏