maxmemory配置
当Redis内存超出物理内存的限制时,内存的数据会开始和磁盘产生频繁的交换(swap)。交换会让Redis的性能急剧下降,对于访问量比较大的的Redis来说,存储效率太慢基本上等于不可用。
在生产环境中我们是不允许 Redis 出现交换行为的,为了限制最大使用内存,Redis 提供了配置参数 maxmemory来限制内存超出期望大小。
maxmemory : 默认为0 不限制
配置
在redis.conf中配置
maxmemory 1024mb
获取maxmemory配置的大小
config get maxmemory
maxmemory-policy配置
安装了Redis Object Cache Pro 插件后,后台-工具-站点健康里面会提示
Redis is configured to use the noeviction policy, which might crash your site when Redis runs out of memory. Setting a reasonable MaxTTL (maximum time-to-live) helps to reduce that risk.
当实际内存超出maxmemory时,Redis提供了几种可选的策略(maxmemory-policy)可通过maxmemory-policy在redis.conf中进行配置。
maxmemory-policy allkeys-lru
一共有六种策略
- noeviction:不会继续服务写请求( del 请求可以继续服务),读请求可以继续进行。这样可以保证不会丢失数据,但是会让线上的业务不能持续进行。这是默 认的淘汰策略。
- volatile-lru: 尝试淘汰设置了过期时间的 key,最少使用的 key 优先被淘汰。 没有设置过期时间的 key不会被淘汰,这样可以保证需要持久化的数据不会突然丢失。
- volatile-ttl:跟上面几乎一样,不过淘汰的策略不是 LRU,而是比较 key 的剩余寿命时的值,ttl越小越优先被淘汰。
- volatile-random:跟上面几乎一样,不过淘汰的 key 是过期 key 集合中随机的 key。
- allkeys-lru:区别于 volatile-lru,这个策略要淘汰的 key 对象是全体的 key 集 合,而不只是过期的 key 集合。这意味着一些没有设置过期时间的 key 也会被淘汰。
6 . allkeys-random:跟上面几乎一样,不过淘汰的 key 是随机的 key。
© 文章系本站作者 飞牛 原创发布于「飞牛士 FeiNews」,文章授权后方可转载,请勿侵权!