Redis技术文章
-
Redis 的 EXEC 返回 nil/null,通常表示 WATCH 监视的键在提交前被触碰,不能据此判断具体哪个客户端打断了事务。本文区分监视冲突、队列错误和事务内命令错误,并给出带上限的重试写法。377 收藏 -
Redis EXPIRE 的 LT 选项只能保证新 TTL 更短,却会把没有过期时间的键视作无限 TTL。本文用 TTL、PTTL 和原子 Lua 脚本说明怎样只缩短已有 TTL,并处理返回值与并发边界。377 收藏 -
数据库 · Redis | 2个月前 | Redis · 内存管理 · 故障排查 · 缓存运维 · redis OOM CLIENT NO-EVICT maxmemory-clients noeviction 客户端驱逐
Redis 写入报 OOM 时,先区分数据键无法淘汰与客户端输出缓冲触发驱逐。本文用 CLIENT NO-EVICT、maxmemory-clients、maxmemory-policy 和 INFO memory 还原两条故障链,给出核对命令、控制连接保护和回退边界。376 收藏 -
Redis 7.0 起可以用 CLIENT NO-EVICT 保护控制连接,但它只影响客户端淘汰,不会替代 maxmemory 或键淘汰策略。本文用一条监控连接说明 ON/OFF、配置前提和验收边界。376 收藏 -
Redis 7.4 及以上可以用 HPEXPIRE 给 hash 的指定字段设置毫秒 TTL。本文用 redis-cli 说明 FIELDS 语法、NX/XX/GT/LT 条件、HPTTL 检查方法,以及字段不存在和 key 级过期的边界。376 收藏 -
MAXLEN 可在写入或独立裁剪时限制 Redis Stream 保留条目数。本文对比精确与近似模式,给出命令示例,并说明 LIMIT、消费组引用及容量规划的适用边界。376 收藏 -
Redis SCAN 不会把整个键空间一次性锁住,但完整遍历仍是 O(N) 工作。COUNT 只是单次工作量提示,配合游标、MATCH、TYPE 和渐进式巡检才能控制线上影响。375 收藏 -
Redis ZRANDMEMBER 用于从 sorted set 随机读取成员。本文按单个成员、正负 COUNT、WITHSCORES、空键和返回顺序说明调用边界,帮助你把随机抽样与按分数查询区分开。375 收藏 -
用 Redis ZADD 的 NX、GT 与 CH 选项设计可重复执行的排行榜更新流程,处理同分、回退、重复消息和降级查询等常见边界。374 收藏 -
Redis SREM 的返回值就是本次实际从 Set 中删除的成员数量,不包含不存在的成员。本文用命令行和 Go 客户端说明如何读取这个数字,并区分 0 个命中、键不存在与类型错误。374 收藏 -
Redis Streams 消费组中,XACK 只负责把已成功处理的消息从当前组的待确认列表移除。本文用最小命令说明确认时机、重复 ID、返回计数、PEL 查询和失败重试边界,避免把重复投递误判成重复确认。374 收藏 -
Redis 8.6 Streams 通过 IDMP 和 IDMPAUTO 支持幂等生产。本文区分生产去重与消费副作用,说明 pid、iid、有限追踪窗口、配置变更及旧客户端兼容边界,并提供原样重试示例。373 收藏 -
Redis Cluster 的多 key 命令要求相关 key 位于同一个 hash slot。本文解释 hash tag 的花括号规则,用 CLUSTER KEYSLOT 检查键名,并说明 CROSSSLOT、MOVED、TRYAGAIN 与热点风险的区别。372 收藏 -
Redis Cluster 执行 Lua 脚本时,key 未显式声明或多个 key 不在同一 hash slot 都可能触发跨槽错误。本文用 KEYS、ARGV 和 hash tag 设计一套可落地的避免方式。371 收藏 -
Redis Stream 消费组确认消息应放在业务处理成功之后。本文解释 XREADGROUP、PEL 与 XACK 的关系,分析确认返回 0、积压和消费者故障场景,并给出 XPENDING、XAUTOCLAIM 的处理方式。371 收藏