-
哨兵节点启用密码认证但未提供密码导致SENTINELmaster报NOAUTH错误;需在sentinel.conf中配置sentinelauth-pass,并手动auth;注意端口、master-name一致性及flags等字段含义。
-
缓存雪崩主因是大量key过期时间高度趋同,需通过扫描TTL、监控expired_keys曲线及检查写入逻辑验证;应采用SETEX或SET...EX原子命令,在基础过期时间上叠加5%–20%随机偏移,并确保所有写入路径(含定时任务、MQ、后台)均覆盖随机化。
-
发布订阅模式适合实时性要求极高、可容忍消息丢失、一对多广播型通知场景,如服务状态广播、实时日志分发、WebSocket用户事件广播;Stream适合需持久化、至少一次投递、支持消费者组与重试的场景,如订单异步处理、用户行为埋点、审计日志归档。
-
应立即停止Redis服务,恢复备份RDB文件,并严格配置user、dir权限(700)、禁用save""、检查日志权限错误;AOF重写需确保目录UMask=077、禁用绝对路径appendfilename;混合持久化与容器化部署须同步宿主机文件属主和权限。
-
RedisLua脚本中不能直接执行SET等命令,必须通过redis.call()或redis.pcall()调用;MULTI/EXEC等事务命令禁用;所有key需显式传入,集群下须同slot;返回值类型需手动判断,避免误判false/0。
-
Redis6.0+的Pub/Sub不阻塞主线程,因消息分发改由独立客户端上下文异步处理;而5.x及更早版本中publish同步遍历订阅者,网络慢或缓冲区满时会阻塞主线程。
-
不能。RedisList无自动回绕机制,需配合LTRIM控制长度实现伪循环队列;RPOPLPUSH不限长也不丢弃数据;原子性操作须用Lua脚本封装;Stream的MAXLEN更贴近循环语义但不支持随机访问。
-
用SETBIT和GETBIT做存在性判断最直接:SETBIT设定位为1,GETBIT查该位是否为1,O(1)时间、极省空间;不可用BITCOUNT替代,不支持三态,需确保ID到偏移量映射一致。
-
Redis集群必须使用ntpd或chronyd平滑同步时间,内网部署专用NTP服务器,配置restrict规则、硬件时钟同步和开机自启,并通过ntpq-p、ntpq-crv及Redis日志持续监控。
-
SENTINELFAILOVER无反应大概率因哨兵未达成共识或主节点状态不满足切换前提:需至少3个哨兵在线且通信正常,目标master必须存在于SENTINELMASTER列表且角色为master,quorum值不可高于实际哨兵数;命令返回OK不代表切换完成,须依次验证哨兵failover_in_progress标志、新主role:master且无master_host、旧主已变为slave并指向新主;手动触发不模拟真实故障路径,无法检测发现延迟、重连失败及客户端重定向问题;演练前须调大down-afte
-
Redis有序集合仅按score排序,不支持多字段或条件排序;需用Lua脚本在服务端原子重排,如score相同时按name字典序,避免客户端排序导致的性能与一致性问题。
-
缓存击穿是热点key过期瞬间并发请求涌向DB,需用逻辑过期、随机过期时间、分级预热、互斥锁及行为验证来防控。
-
会,大量key同时过期会引发CPU尖峰、内存延迟释放和请求抖动;Redis通过每100ms随机抽样检查过期key,超25%过期则连续多轮高强度扫描删除,导致延迟飙升甚至超时。
-
最小可行路径是为每个用户创建独立Set键(如user:123:tags),用SADD添加标签、SMEMBERS查询,确保标签标准化;避免字符串拼接、KEYS扫描及反向索引维护,高频查询再引入RedisSearch或Elasticsearch。
-
SLAVEOFNOONE是断连+角色重置的原子操作:终止复制连接、清空主节点状态、将role改为master,运行时生效但重启回退,不清理数据、不通知其他节点。