Redis技术文章
-
Redis 连接池耗尽不等于 Redis 慢。本文用 go-redis PoolStats、SLOWLOG GET 和 CLIENT LIST 区分慢命令、池等待与请求生命周期未结束,并给出修复顺序。378 收藏 -
Redis Pub/Sub 采用至多一次投递,订阅端断线期间消息不会保留。本文用最小命令和排查表说明何时继续用 Pub/Sub,何时切换 Streams 或采用混合方案。363 收藏 -
Redis SCAN 不是并发安全的静态快照:从扫描开始到结束始终存在的键会被完整迭代返回,但扫描期间被删除、新增或重新加入的键可能返回也可能不返回。本文给出重复返回、COUNT、UNLINK 和二次复查的处理方式。323 收藏 -
解释 Redis SET NX EX 在键不存在、已有 TTL 和条件更新场景下的真实行为,区分 NX 条件写入、EX 重置租期与 KEEPTTL 保留剩余 TTL,并给出锁初始化、更新和排查命令。128 收藏 -
Redis Hash 适合把对象拆成多个 field。本文用 HSET 和客户端示例说明如何只更新一个子键,减少大对象读写,并处理返回值、并发覆盖与过期时间边界。414 收藏 -
Redis ZRANGE 遇到相同 score 时不会按写入时间排序,而是继续比较 member。本文用排行榜和分页场景说明字典序规则,并给出可复现的二级排序设计。322 收藏 -
Redis Stream 消费组里的 Pending 消息不是普通队列积压。本文用 XPENDING 判断空闲时间,再用 XAUTOCLAIM 认领超时消息,最后用 XACK 收口,并说明认领后的重复消费与幂等边界。494 收藏 -
修改 Redis maxmemory-policy 前,先用 INFO、SCAN 和 MEMORY USAGE 建立键空间、碎片和大键基线,判断新策略会淘汰哪些键,避免把持久数据误当成缓存。133 收藏 -
Redis 内存碎片率升高不一定代表数据变多。本文从 INFO memory 基线、SCAN 分批扫描、MEMORY USAGE 抽样和大键定位入手,区分数据增长、删除后的 RSS 滞留与分配器复用。499 收藏 -
Redis 大键排查可以先用 SCAN 分批枚举命名空间,再用 MEMORY USAGE 比较单键占用;对候选键结合 TYPE、元素数量和 SAMPLES 0 复核,并区分键过大与实例碎片率。288 收藏 -
Redis MULTI 中要先区分队列阶段错误、WATCH 冲突和执行阶段错误。现代 Redis 的语法或参数错误会让 EXEC 返回 EXECABORT;类型错误可能进入结果数组,其他命令仍会执行。本文给出判断和有限重试边界。423 收藏 -
Redis 的 EXEC 返回 nil/null,通常表示 WATCH 监视的键在提交前被触碰,不能据此判断具体哪个客户端打断了事务。本文区分监视冲突、队列错误和事务内命令错误,并给出带上限的重试写法。377 收藏 -
Redis AOF 重写不是只写一个新文件:重写期间旧文件、新 base AOF 和增量写入可能同时占用空间。本文用 INFO persistence、du、df 和历史峰值建立提前发现磁盘不足的检查清单。154 收藏 -
Redis 选 RDB 还是 AOF,关键不是哪种方式绝对更好,而是业务能接受丢失几秒或几分钟数据。本文按丢失窗口、fsync、恢复速度和备份要求给出 RDB、AOF 与组合策略的选择方法。501 收藏 -
Redis Lua 接收 JSON 时,ARGV 仍是原始字符串。本文用一次解码、字段类型校验和明确的写入/返回转换,处理字符串、数字、布尔值与 Lua 表混用带来的误判。104 收藏