在使用 Redis RDB 持久化并持续写入某个 key 时,如何避免日志(指内存中键的修改)导致的数据膨胀问题?请说明你的解决方案。
考察说明
考察对 Redis 内存模型、RDB 持久化特性及 key 覆盖写入的内存回收机制的理解
回答思路
- 指出 RDB 是快照,不记录每个写操作的日志,膨胀问题实际是频繁覆盖同一 key 导致的内存分配器碎片或旧值残留
- 说明 Redis 在覆盖 key 时会释放旧值内存,但分配器碎片和内存碎片率(mem_fragmentation_ratio)可能导致膨胀
- 给出解决方案:使用合理的内存分配策略、定期执行 MEMORY PURGE(如果可用)、监控碎片率并考虑重启以整理内存