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. 内存不足以存入新数据时,移除最不经常使用的
相关推荐
Amagi.2 分钟前
Redis的内存淘汰策略
数据库·redis·mybatis
hai4117419628 分钟前
mysql 与postgresql 的区别(gpt4)
数据库·mysql·postgresql
知识分享小能手18 分钟前
mysql学习教程,从入门到精通,SQL 删除数据(DELETE 语句)(19)
大数据·开发语言·数据库·sql·学习·mysql·数据开发
白总Server32 分钟前
MongoDB解说
开发语言·数据库·后端·mongodb·golang·rust·php
冰镇毛衣38 分钟前
2.4 数据库表字段约束
数据库·sql·mysql
&木头人&1 小时前
oracle select字段有子查询会每次执行子查询吗
数据库·oracle
冰镇毛衣1 小时前
数据库简介
开发语言·数据库·sql·oracle
(⊙o⊙)~哦1 小时前
oracle查询历史操作记录
数据库·oracle
无休居士1 小时前
【实践】应用访问Redis突然超时怎么处理?
数据库·redis·缓存
.Net Core 爱好者1 小时前
Redis实践之缓存:设置缓存过期策略
java·redis·缓存·c#·.net