Redis内存满了怎么办?

redis设置配置文件的maxmemory参数,可以控制其最大可用内存大小(字节)。

那么当所需内存,超过maxmemory怎么办?

这个时候就该配置文件中的maxmemory-policy出场了。

所以,当内存占用满了以后,redis提供了一套缓存淘汰机制:MEMORY MANAGEMENT(内存溢出控制策略)

 

内存淘汰策略相当于清除掉那些占用内存并且使用不太频繁的数据,淘汰掉这些不活跃数据来清理内存,其默认值是noeviction。

当Redis使用的内存达到上限maxmemory后,就会根据maxmemory-policy设置的相关策略进行对应的操作,Redis支持以下6中策略:

* noeviction:旧缓存永不过期,新缓存设置不了,返回错误

* allkeys-lru:使用LRU算法清除最少用的旧缓存,然后保存新的缓存(推荐使用)

* allkeys-random:在所有的缓存中随机删除(不推荐)

* volatile-lru:在那些设置了expire过期时间的缓存中,使用LRU算法清除最少用的旧缓存,然后保存新的缓存

* volatile-random:在那些设置了expire过期时间的缓存中,随机删除缓存

* volatile-ttl:在那些设置了expire过期时间的缓存中,删除即将过期的

 

LRU算法,least RecentlyUsed,最近最少使用算法。也就是说默认删除最近最少使用的键。

但是一定要注意一点!redis中并不会准确的删除所有键中最近最少使用的键,而是随机抽取5个键,删除这五个键中最近最少使用的键。

 

posted @ 2020-01-13 22:24  gaopengpy  阅读(903)  评论(0编辑  收藏  举报