Redis删除策略

一、删除策略

1. 过期数据

  • 在redis中的,设置了过期时间的数据
  • 当一个数据过期后,并不会立刻从内存中删除
  • 数据保存形式: 维护了一片value和对应的过期时间的区域

在这里插入图片描述

2. 删除策略

  • 删除策略就指的是针对expires区域进行操作
  • 保证不会因为大量expire,将服务器压垮

2.1 定时删除

# 1. 实现方式
创建一个定时器,当key有过期时间时,时间一到,定时器任务就会立即执行
将expires区域和k-v区域都删除

# 2. 优缺点
优点:节约内存
缺点:cpu压力较大,此时无论cpu负载量多高,都会占用cpu来释放,影响redis的吞吐量

2.2 惰性删除

# 1. 实现方式
数据过期后,并不会立刻删除
等到该数据下次访问的时候,redis才会删除该数据,并返回该值为nil

# 2 优缺点
优点:节省cpu的资源
缺点:可能存在大量的,无人访问的数据会一直存在服务器

2.3 定期删除

# 1. 实现方式
每秒钟定期对redis中每个库的数据进行轮询
轮询的数据,对过期的数据随机删除一部分
如果随机删除的数据占轮训数据的比例超过一定值,继续轮询删除

二、逐出策略

  • 如果所有的数据都没设定过期时间,那么数据就会一直保存
  • 如果存入的数据量太多,那么就会出现redis的内存不足问题
  • 逐出策略就是针对这个问题
- 新数据进入到redis中,如果内存不足,会多次逐出算法。如果依然失败,就会出现OOM错误

1 检测易失数据

  • 即可能会过期的数据
1. volatile-lru: least recently used: 最近最少使用的数据淘汰
2. volatile-lfu:least frequently used: 最近使用次数最少的数据淘汰
3. volatile-ttl: 马上要过期的数据进行淘汰
4. volatile-random: 随机挑选数据淘汰

2 全库数据

1. volatile-lru: least recently used: 最近最少使用的数据淘汰
2. volatile-lfu:least frequently used: 最近使用次数最少的数据淘汰
3. volatile-random: 随机挑选数据淘汰

3 放弃数据驱除

noeviction: 禁止驱逐数据,可能引发OOM
默认配置

4. 配置方式

  • redis.conf文件中配置
maxmemory-policy noeviction

版权声明:本文为weixin_43374578原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。