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. 内存不足以存入新数据时,移除最不经常使用的
相关推荐
瀚高PG实验室5 分钟前
PG的JDBC对SQL中绑定变量个数的限制
数据库·sql·postgresql·瀚高数据库
lifewange6 分钟前
NoSQL
数据库·nosql
Emily呀16 分钟前
【无标题】
redis
weixin_4597539424 分钟前
MySQL主从同步跳过错误影响一致性_使用pt-table-sync修复
jvm·数据库·python
kexnjdcncnxjs30 分钟前
如何解决Oracle 12c以上版本的ORA-65096_C##公共用户前缀限制
jvm·数据库·python
1892280486136 分钟前
H27QCG8T2ELR-BCF海力士H27QCG8UDBIR-BCB
大数据·服务器·人工智能·科技·缓存
zhoutongsheng43 分钟前
MySQL触发器无法触发的原因分析_MySQL触发器排查指南
jvm·数据库·python
愈努力俞幸运43 分钟前
function calling与mcp
android·数据库·redis
2301_779622411 小时前
不同品牌SSD对HTML函数工具加载速度影响大吗_存储测试汇总【汇总】
jvm·数据库·python