redis内存淘汰机制

给redis设置过期时间有啥用?

  1. 防止out of memory
  2. 有些业务场景只需要数据在一定时间内存在
    • 验证码
    • 用户token之类的

redis如何判断数据是否过期的?

通过一个过期字典,可以看作hash表,字典的键指向redis数据库中的key,值是long类型的整数(时间戳)

redis删除策略?

  1. 惰性删除

    text 复制代码
    在取出值的时候判断,对cpu友好,但是会造成大量过期数据未删除的情况
  2. 定期删除

    text 复制代码
    每隔一段时间抽取一批,并且会限制删除操作的时长和频率

    定期对内存友好,惰性对cpu友好,所以采用定期+惰性(懒汉式)

惰性和定期删除还是会有很多过期key存在,怎么解决呢?

text 复制代码
redis内存淘汰机制

redis提供六种淘汰策略

  1. 设置过期的数据中挑最近最少使用的
  2. 设置过期的数据挑将要过期的
  3. 设置过期的数据中挑选任意的
  4. 内存不足以存入新数据时,移除最近最少使用的
  5. 任意删除
  6. 不删除,内存不足时写入报错

4.0版本又加入两种

  1. 过期中最不经常使用的
  2. 内存不足以存入新数据时,移除最不经常使用的
相关推荐
凌虚6 小时前
面向 MySQL 用户的 PostgreSQL 快速上手指南
数据库·后端·架构
五阿哥永琪6 小时前
MySQL中操作json的函数!
数据库·mysql·json
来者皆善6 小时前
了解Mysql优化吗?如何优化索引?
数据库·mysql
ai_coder_ai8 小时前
分布式缓存架构设计与实践
分布式·缓存
凡尘——雨落凡尘8 小时前
PHP 线上十大隐形故障复盘:90% 的网站卡顿、502、雪崩,都是这些细节导致的
redis·nginx·php·session
赤壁小虾9 小时前
【渲染流水线】[逐片元阶段]-[透明度测试]以UnityURP为例
java·前端·数据库
MC皮蛋侠客9 小时前
SQLAlchemy 系列(七):高级建模与高效写入——批量 DML、方言与扩展
数据库·python
奈斯先生Vector10 小时前
把 Midjourney 二次编辑做成生产系统:customId 能力令牌、Action Graph 与 WebUI 精修工作台
数据库·人工智能·架构·aigc·音视频·midjourney
Lethehong10 小时前
双擎并驱·全链路并行:KFS让TB级异构增量同步秒级到达
数据库
MC皮蛋侠客10 小时前
SQLAlchemy 系列(八):AsyncIO、并发与 Web 生命周期——让每个并发任务持有自己的 Session
数据库·python