-
RedisStream不受maxmemory-policy淘汰机制影响,仅XADD的MAXLEN/MINID参数可在写入时截断数据;MAXLEN加~为近似截断,不加则严格控制条数,且只从最老端删除;消费者组未XACK会导致PEL积压,MAXLEN无法清理。410 收藏 -
SDIFF不能直接找出“新增关注”,因其仅执行集合差运算且不记录时间顺序;需先构建两个语义明确的快照集合(如按日期命名),再用SDIFF计算差集,否则易因键名错误、空键或客户端处理问题导致结果异常。408 收藏 -
Redis单个STRING超10MB必须拆分,建议512KB内切片并用GETRANGE/SETRANGE操作;BigHash应按访问频次和语义拆为小Hash,禁用HGETALL;一致性靠Lua脚本或状态字段+重试保障。407 收藏 -
应先用EXISTS检查key存在,再用TYPE校验类型是否为string,因GET对非string类型会直接报错且无法捕获;TYPE返回值严格区分大小写和拼写,须用==全等比较。397 收藏 -
从节点默认不执行任何过期逻辑,仅重放主节点发来的DEL等命令;必须设maxmemory-policy为noeviction(或7.0+启用replica-ignore-maxmemoryyes)防止主动淘汰破坏一致性。396 收藏 -
RedisStreams用XADD存操作日志最直接,天然按毫秒级时间戳排序,支持XREAD/XRANGE按时间范围查询,需设MAXLEN防爆涨,多服务通过consumergroup共享且互不干扰,持久化依赖AOF配置。395 收藏 -
RedisString底层使用SDS而非C字符串,具备O(1)长度获取、二进制安全等特性;其内存布局含sdshdr头(因类型不同为4/6字节)与数据,小字符串存在固定开销;扩容采用几何增长策略易造成内存浪费;≤44字节时启用embstr编码以节省内存和指针跳转开销。394 收藏 -
哨兵节点启用密码认证但未提供密码导致SENTINELmaster报NOAUTH错误;需在sentinel.conf中配置sentinelauth-pass,并手动auth;注意端口、master-name一致性及flags等字段含义。393 收藏 -
直接用SETNX易误删锁,因加锁与设过期非原子操作,且释放锁未校验线程标识;正确做法是SET+NX+EX原子加锁并用Lua脚本校验值后删除。393 收藏 -
HSET查单个字段更快,SET写整条数据更省网络;字段少且固定用HSET,动态多变或需原子替换用SET;LIST队列易丢消息,推荐STREAM;ZSET排行榜慎用浮点score;大SET内存开销大,慎用SMEMBERS。392 收藏 -
HMSET自Redis6.2起被弃用,应统一使用HSET:支持批量写入、返回实际修改数、空值字段会被删除;需注意原子性(单次多字段更新)、客户端传参规范(推荐mapping=)及代理字段数限制。392 收藏 -
Redis键空间事件默认关闭,需配置notify-keyspace-events为KEA等组合才生效;事件频道名格式严格、无历史回放、过期事件延迟不可靠、断连事件丢失且无自动续订。386 收藏 -
单纯靠TTL随机化不能根治缓存雪崩,但它是成本最低、见效最快的前置防线——关键在于“错开”而非“随机”,且必须配合过期时间分级和热点识别。386 收藏 -
RedisLua脚本中不能直接执行SET等命令,必须通过redis.call()或redis.pcall()调用;MULTI/EXEC等事务命令禁用;所有key需显式传入,集群下须同slot;返回值类型需手动判断,避免误判false/0。385 收藏 -
RedisStream比PUB/SUB更适合做持久化队列,因其支持消息持久化、消费者组、ACK机制、唯一消息ID和按位置回溯;PUB/SUB纯内存广播,无存储、无堆积能力。384 收藏