Redis内存淘汰策略

作者: xupengzhang | 来源:发表于2019-03-10 22:18 被阅读0次

Expire

Redis的数据可以采用expire命令 设置过期时间,到了过期时间之后reids并不是立即将过期的key删除;
而是采用了两种方式来进行过期key的处理:

  • 定期删除:redis默认每隔1000ms随机获取部分key,如果已经过期就将对应的key删除;

  • 惰性删除:在每次访问key的时候回检查key是否已经过期,如果过期就将对应的key删除;

内存淘汰策略

redis配置文件中有个maxMemory参数,当内存中的数据达到该最大内存的配置,新的数据写入会执行淘汰策略;
maxMemory如果设置为0,表示不限制,当系统内存不足以容纳新的写入数据的场景下,redis同样会采取内存淘汰策略:

1. noeviction: 内存不足以写入新数据的情况下**直接报异常**;
2. allkeys-lru: 在**所有数据集中**将最少是用的数据移除;
3. allkeys-random:在**所有数据集中** 随机移除一些数据;
4. volatile-ttl: 在**设置过期的数据集**中选最早过期的数据进行移除;
5. volatile-random:在**设置过期的数据集**中随机选择部分数据移除;
6. volatile-lru:在**设置过期的数据集**中移除最少使用的数据;

内存淘汰策略设置默认是 noeviction;
# maxmemory-policy noeviction

LRU

redis采用的LRU是非精准的LRU算法,基于抽样实现;
由于redis是单线程的,如果采用全量的数据进行LRU计算,会比较消耗CPU资源;
因此,redis提供了一个重要参数:
# maxmemory-samples 5
该参数表示,每次随机选出5个不经常使用的key进行移除;
配置的 参数值越大,其LRU结果能接近全量LRU的结果;
但同时会给CPU带来比较大的开销,因此如果仅仅将redis作为LRU缓存服务使用,建议保持默认配置即可。

备注:了解一下LRU算法和LRU算法实现;

相关文章

  • Redis从入门到精通(三、Redis的过期策略和内存淘汰机制)

    此篇介绍了Redis过期策略以及Redis的内存淘汰机制,从内存淘汰的8种策略,如何开启内存淘汰策略到如何选择合适...

  • redis_内存淘汰策略

    redis_内存淘汰策略 介绍 Redis的内存淘汰策略是指在Redis的用于缓存的内存不足时,怎么处理需要新写入...

  • Redis知识梳理——淘汰策略

    Redis淘汰策略 Redis中设置最大使用内存,当内存数据集达到阈值时,redis将对内存数据进行淘汰,淘汰规则...

  • Redis过期策略和内存淘汰机制

    内存淘汰策略 当 Redis 节点分配的内存使用到达最大值以后,为了继续提供服务,Redis 会启动内存淘汰策略,...

  • Redis - 过期策略和内存淘汰策略

    Redis - 过期策略和内存淘汰策略 Redis内存过期策略 Redis是key-value数据库,我们可以设置...

  • 5.Redis内存淘汰策略

    Redis内存淘汰策略 Redis在使用内存达到某个阈值(通过maxmemory配置)的时候,就会触发内存淘汰机制...

  • redis基础&spark操作redis

    Redis内存淘汰策略 将Redis用作缓存时,如果内存空间用满,就会自动驱逐老的数据。 为什么要使用内存淘汰策略...

  • Redis几种常见问题

    1.Redis的过期策略以及内存淘汰机制 Redis采用的是定期删除+惰性删除策略+内存淘汰机制。 定期删除,Re...

  • redis内存淘汰策略

    什么时候执行内存淘汰策略 redis为内存数据库,当redis内存耗尽的时候,将执行内存淘汰策略(就是抛弃一些ke...

  • redis内存满了解决方法

    redis内存满了解决方法: 1,增加内存; 2,使用内存淘汰策略。 3,Redis集群。 下面我们就来重点介绍一...

网友评论

    本文标题:Redis内存淘汰策略

    本文链接:https://www.haomeiwen.com/subject/dkfmpqtx.html