Redis技术文章
-
用一个带版本号的缓存写入场景,验证 Redis SET 的 GET、KEEPTTL、NX/XX 组合行为,避免更新成功却丢掉原有过期时间。501 收藏 -
数据库 · Redis | 2个月前 | Redis · 消息队列 · Stream · 重试 · redis streams XPENDING XAUTOCLAIM PEL pending JUSTID
Redis Streams 里,XAUTOCLAIM 只负责把空闲消息转交给新消费者,不能替代 XACK,也不会自动清空 PEL。本文用 redis-cli 拆开 JUSTID、XPENDING、XACK 与 XDEL 的边界,给出重试后验收消息是否真正收口的检查路径。501 收藏 -
Redis 选 RDB 还是 AOF,关键不是哪种方式绝对更好,而是业务能接受丢失几秒或几分钟数据。本文按丢失窗口、fsync、恢复速度和备份要求给出 RDB、AOF 与组合策略的选择方法。501 收藏 -
Redis AOF 重写时,内存风险主要看 fork 之后的 COW 增长,磁盘风险则要拆成剩余空间、写入吞吐和 fsync 排队。本文用 INFO、MEMORY STATS、df 与 iostat 建立一套可复用的判断清单。501 收藏 -
Redis Stream 的 XTRIM 只限制流中条目,不会自动解决消费组 PEL 积压。本文用 XLEN、XINFO GROUPS、XPENDING 区分问题,并给出 MAXLEN、ACKED、DELREF 的选择方法。501 收藏 -
Redis 客户端缓存开启 CLIENT TRACKING 后,如何确认读过的键能收到失效通知?本文用 RESP3、BCAST、NOLOOP 和 TRACKINGINFO 组成一套可复查的验收流程。500 收藏 -
Redis 线上重启时,RDB 与 AOF 会走不同的恢复路径。本文用一个可复现的 Go 检查程序拆开两种持久化方式的边界,说明如何按数据恢复目标选择配置。500 收藏 -
Redis Stream 消费组中的消息如果长时间没有 XACK,可以通过 PEL、XPENDING 和 XCLAIM 转给新消费者。本文说明超时认领、幂等处理、XACK 闭环与重复认领边界。500 收藏 -
Redis List 队列要把待办任务可靠地交给消费者,推荐用 LMOVE 原子地从 pending 移入 processing,再用 LREM 确认完成;Redis 6.2+ 还可用 BLMOVE 等待任务。499 收藏 -
Redis 内存碎片率升高不一定代表数据变多。本文从 INFO memory 基线、SCAN 分批扫描、MEMORY USAGE 抽样和大键定位入手,区分数据增长、删除后的 RSS 滞留与分配器复用。499 收藏 -
Redis Stream 的 NOACK 让新读取消息不进入 PEL,却不能保证业务成功。本文给出消费组命令和两组对照示例,区分读取、成功与 Pending 计数,说明性能测量方法及丢失容忍边界。498 收藏 -
Redis 7.0 及以上可用 no-writes 注册只读函数,再通过 FCALL_RO 调用并路由到只读副本。本文说明函数声明、numkeys 参数边界、KEYS/ARGV 划分、常见拒绝原因与复制延迟取舍。495 收藏 -
Redis BITPOS 在参数末尾加 BIT 后,会把 start 和 end 当作包含端点的位范围,并返回匹配位的绝对编号。本文说明 BYTE 与 BIT 的区别、首个置位点查询和 -1 返回值的处理方式。495 收藏 -
Redis LMPOP 可以从多个候选列表中找到第一个非空键,并按 LEFT 或 RIGHT 一次弹出指定数量。本文用订单队列示例拆清 COUNT、空队列返回和集群多键边界。494 收藏 -
Redis 8.6 为 Streams 的 XADD 增加 IDMP 与 IDMPAUTO,帮助生产端在网络断开或进程重试时避免同一消息重复入流。本文拆开 pid、iid、Stream entry ID 与消费者组的边界,给出可验证的命令写法。494 收藏