Contents

数据库-redis-小林coding-功能篇

本系列笔记为作者在跟随小林coding学习的时候做的笔记。感谢小林大大。

过期删除策略

设置 key 过期时间的命令:

  • expire <key> <n>:key 在 n 秒后过期
  • pexpire <key> <n>:key 在 n 毫秒后过期
  • expireat <key> <n>:key 在某个时间戳(精确到秒)之后过期
  • pexpireat <key> <n>:key 在某个时间戳(精确到毫秒)之后过期

设置字符串时顺便添加过期时间:ex选项(秒)和px选项(毫秒)

判定 key 已过期

过期字典存储过期时刻

https://cdn.xiaolincoding.com/gh/xiaolincoder/redis/%E8%BF%87%E6%9C%9F%E7%AD%96%E7%95%A5/%E8%BF%87%E6%9C%9F%E5%AD%97%E5%85%B8%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.png
数据结构

过期删除策略

  • 定时删除:由定时事件处理器执行 key 的删除操作
  • 惰性删除:访问key时对过期key进行删除
  • 定期删除:每隔一段时间「随机」取出一定数量的 key 进行检查,并删除过期key

Redis 过期删除策略

Redis 选择「惰性删除+定期删除」

https://cdn.xiaolincoding.com/gh/xiaolincoder/redis/%E8%BF%87%E6%9C%9F%E7%AD%96%E7%95%A5/%E6%83%B0%E6%80%A7%E5%88%A0%E9%99%A4.jpg
惰性删除

定期删除周期10s,抽取数量写死在代码里20个

https://cdn.xiaolincoding.com/gh/xiaolincoder/redis/%E8%BF%87%E6%9C%9F%E7%AD%96%E7%95%A5/%E5%AE%9A%E6%97%B6%E5%88%A0%E9%99%A4%E6%B5%81%E7%A8%8B.jpg
定期删除

内存淘汰策略

设置 Redis 最大运行内存

redis.conf 参数 maxmemory <bytes>

内存淘汰策略有哪些

  1. 不进行数据淘汰的策略:noeviction默认的内存淘汰策略,超过时触发 OOM
  2. 进行数据淘汰的策略:淘汰具有过期时间的数据volatile-random,volatile-ttl,volatile-lru,volatile-lfu;所有数据范围内进行淘汰allkeys-random,allkeys-lru,allkeys-lfu

Redis 如何实现 LRU 算法:Redis 的对象结构体中添加一个额外的字段,用于记录此数据的最后一次访问时间

Redis 如何实现 LFU 算法:多记录了「数据的访问频次」的信息(随时间递减)

 |