数据库-redis-小林coding-功能篇
Contents
本系列笔记为作者在跟随小林coding学习的时候做的笔记。感谢小林大大。
过期删除策略
设置 key 过期时间的命令:
- expire
<key>
<n>
:key 在 n 秒后过期 - pexpire
<key>
<n>
:key 在 n 毫秒后过期 - expireat
<key>
<n>
:key 在某个时间戳(精确到秒)之后过期 - pexpireat
<key>
<n>
:key 在某个时间戳(精确到毫秒)之后过期
设置字符串时顺便添加过期时间:ex选项(秒)和px选项(毫秒)
判定 key 已过期
过期字典存储过期时刻
过期删除策略
- 定时删除:由定时事件处理器执行 key 的删除操作
- 惰性删除:访问key时对过期key进行删除
- 定期删除:每隔一段时间「随机」取出一定数量的 key 进行检查,并删除过期key
Redis 过期删除策略
Redis 选择「惰性删除+定期删除」
定期删除周期10s,抽取数量写死在代码里20个
内存淘汰策略
设置 Redis 最大运行内存
redis.conf 参数 maxmemory <bytes>
内存淘汰策略有哪些
- 不进行数据淘汰的策略:noeviction默认的内存淘汰策略,超过时触发 OOM
- 进行数据淘汰的策略:淘汰具有过期时间的数据volatile-random,volatile-ttl,volatile-lru,volatile-lfu;所有数据范围内进行淘汰allkeys-random,allkeys-lru,allkeys-lfu
Redis 如何实现 LRU 算法:Redis 的对象结构体中添加一个额外的字段,用于记录此数据的最后一次访问时间
Redis 如何实现 LFU 算法:多记录了「数据的访问频次」的信息(随时间递减)