美文网首页我爱编程
Redis 内存淘汰机制

Redis 内存淘汰机制

作者: yjwlyy | 来源:发表于2018-03-28 17:32 被阅读0次

Redis内存淘汰指的是用户存储的一些键被可以被Redis主动地从实例中删除,从而产生读miss的情况。Redis最常见的两种应用场景为缓存和持久存储,首先要明确的一个问题是内存淘汰策略更适合于那种场景?是持久存储还是缓存?

内存的淘汰机制的初衷是为了更好地使用内存,用一定的缓存miss来换取内存的使用效率。

首先要配置maxmemory值

1.客户端发起了需要申请更多内存的命令(如set)。

2.Redis检查内存使用情况,如果已使用的内存大于maxmemory则开始根据用户配置的不同淘汰策略来淘汰内存(key),从而换取一定的内存。

3.如果上面都没问题,则这个命令执行成功。

maxmemory为0的时候表示我们对Redis的内存使用没有限制。


Redis提供了下面几种淘汰策略

volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰

volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰

volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰

allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰

allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰

noeviction:禁止驱逐数据,当内存使用达到阈值的时候,所有引起申请内存的命令会报错

设置方式   

config set maxmemory-policy volatile-lru


试验总结:

1,版本不同,默认的策略不同

在2.8.13的版本里,默认是noeviction,在3.2.3版本里默认是volatile-lru

2,volatile-lru、volatile-ttl、volatile-random这几种只对设置了过期时间的key有效,不会淘汰没有设置过期时间的key

3,与是否设置持久化无关

4,测试volatile-lru测量,在插入有过期时间的key时,如果达到了maxmemory值,就会对老的key进行淘汰,插入新值

5,如果设置为noeviction或者key没有过期时间,当达到最大内存值时就会直接报错


下面看看几种策略的适用场景:

·         allkeys-lru:如果我们的应用对缓存的访问符合幂律分布(也就是存在相对热点数据),或者我们不太清楚我们应用的缓存访问分布状况,我们可以选择allkeys-lru策略。

·         allkeys-random:如果我们的应用对于缓存key的访问概率相等,则可以使用这个策略。

·         volatile-ttl:这种策略使得我们可以向Redis提示哪些key更适合被eviction。

相关文章

  • 5.Redis内存淘汰策略

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

  • Redis几种常见问题

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

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

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

  • 缓存 - Redis 内存淘汰机制

    Redis 内存淘汰机制 Redis 内存淘汰指的是用户存储的一些键被可以被 Redis 主动地从实例中删除,从而...

  • redis内存淘汰机制

    配置: redis.conf配置文件中配置最大可用内存 命令操作: redis内存淘汰机制: 种类:noevict...

  • Redis内存淘汰机制

    Redis内存淘汰指的是用户存储的一些键被可以被Redis主动地从实例中删除,从而产生读miss的情况,那么Red...

  • Redis 内存淘汰机制

    Redis内存淘汰指的是用户存储的一些键被可以被Redis主动地从实例中删除,从而产生读miss的情况。Redis...

  • 8.Redis内存淘汰策略

    内存淘汰机制 当 Redis 内存超出物理内存限制时,内存的数据会开始和磁盘产生频繁的交换 (swap)。 交换会...

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

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

  • Redis 源码研究之数据淘汰机制

    本文主要介绍Redis的几种数据淘汰机制。 I、上帝视角 由于Redis是内存型数据库,其允许用户设置最大使用内存...

网友评论

    本文标题:Redis 内存淘汰机制

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