Redis内存限制管理–maxmemory和maxmemory-policy
解决办法
maxmemory 512mb (内存4G设置512M,根据自己的内存设置)
maxmemory-policy allkeys-lfu
作为内存数据库,为了防止redis占用过多的内存对其他的应用程序造成影响,可以在redis.conf文件中通过设置maxmemory选项对redis所能够使用的最大内存做限制,并通过maxmemory_policy内存淘汰策略对redis占用内存超过maxmemory之后的行为做限制。
一、设置 maxmemory
a、通过redis-cli命令设置:config get maxmemory和 config set maxmemory 100MB;
b、修改redis配置文件redis.conf: maxmemory 100MB
二、maxmemory-policy淘汰策略(默认:maxmemory-policy noeviction)
当 Redis 内存使用达到 maxmemory 时,需要选择设置好的 maxmemory-policy 进行对数据进行淘汰机制。
1.volatile-lru(least recently used):最近最少使用算法,从设置了过期时间的键key中选择空转时间最长的键值对清除掉;
2.volatile-lfu(least frequently used):最近最不经常使用算法,从设置了过期时间的键中选择某段时间之内使用频次最小的键值对清除掉;
3.volatile-ttl:从设置了过期时间的键中选择过期时间最早的键值对清除;
4.volatile-random:从设置了过期时间的键中,随机选择键进行清除;
5.allkeys-lru:最近最少使用算法,从所有的键中选择空转时间最长的键值对清除;
6.allkeys-lfu:最近最不经常使用算法,从所有的键中选择某段时间之内使用频次最少的键值对清除;
7.allkeys-random:所有的键中,随机选择键进行删除;
8.noeviction:不做任何的清理工作,在redis的内存超过限制之后,所有的写入操作都会返回错误;但是读操作都能正常的进行;
前缀为volatile-和allkeys-的区别在于二者选择要清除的键时的字典不同,volatile-前缀的策略代表从redisDb中的expire字典中选择键进行清除;allkeys-开头的策略代表从dict字典中选择键进行清除。maxmemory-policy设置方式同maxmemory一样。
©版权声明
「特别说明」易光易影(www.yigyiy.com)收集的资源仅供内部学习研究软件设计思想和原理使用,学习研究后请自觉删除,请勿传播,因未及时删除所造成的任何后果责任自负。如果用于其他用途,请购买正版支持作者,谢谢!若您认为 易光易影(www.yigyiy.com)发布的内容若侵犯到您的权益,请点击此处侵权反馈。我们将第一时间配合处理!
评论0