企业项目管理、ORK、研发管理与敏捷开发工具平台

网站首页 > 精选文章 正文

一分钟了解Redis淘汰策略(redis 淘汰策略有哪些?)

wudianyun 2025-03-19 03:16:28 精选文章 27 ℃

Redis内存不足是否会挂掉

Redis数据存放在内存里面,在生产环境高并发的情况下操作redis,偶尔会遇到 Redis 服务器内存不够的情况,如果继续往Redis存储数据,是否会撑爆?显然是有可能会的,为了防止 Redis 内存撑爆都会做淘汰策略,此时Redis 的内存是如何回收处理的呢?对于带有过期时间的 Key Redis 又是如何处理的呢?

Redis淘汰策略配置

Redis默认情况下,是没有对内存大小做限制的,需要根据业务场景进行设置;
maxmemory 300mb :设置Redis 内存大小的限制,当数据达到限定大小后,会选择配置的策略淘汰数据;
maxmemory-policy volatile-lru: 设置Redis的淘汰策略;

Redis淘汰策略

将Redis用作缓存时,如果内存空间用满,就会自动移除动老的数据。
此时小伙伴会想,这样不合理吧,这样不就把将常用的数据也给淘汰了么?
显然是不会的,为了防止内存撑爆,Redis会设置一个阈值,如果达到服务器这个阈值,就不可以存储,那么此时我们会制定一个方案,要么你再存储就报错,要么就采用过期策略;Redis内存淘汰策略和垃圾回收机制是非常相似的,会淘汰不经常使用的数据;这样也不会影响整个业务逻辑;

Redis六种淘汰策略

noeviction:不回收,当内存使用达到阈值的时候,再新增数据的时候会返回 error (默认淘汰策略);
allkeys-lru:在所有的key中,优先淘汰最近未使用的key(推荐);
volatile-lru:设置了过期时间的key中,优先淘汰最近未使用的key;
allkeys-random:在所有的key中,随机淘汰key(不靠谱);
volatile-random:在设置了过期时间的key中,随机淘汰key(不靠谱);

volatile-ttl:在设置了过期时间的key中,优先淘汰最早会过期的key。

注:最近未使用就是这段时间没有被使用,可能之前用过,会优先淘汰或者存进去就没有使用过的key;

Redis淘汰策略执行过程

  1. Redis客户端运行命令,添加数据申请内存;
  2. Redis 会检查内存的使用情况,如果已经超过的最大限制,就是根据配置的内存淘汰策略去淘汰相应的 key,从而保证新数据正常添加;
  3. 继续执行命令。

Tags:

最近发表
标签列表