Redis中的淘汰策略
Redis 的内存淘汰策略,是指当内存使用达到最大内存极限时,需要使用淘汰算法来决定清理掉哪些数据,以保证新数据的存入。
最大内存设置
redis.conf 参数配置:
# maxmemory <bytes>
如果不设置maxmemory 或者设置为0,64 位系统不限制内存,32 位系统最多使用3GB 内存。
动态修改:
redis> config set maxmemory 2GB
到达最大内存以后怎么办?
淘汰策略
https://redis.io/topics/lru-cache
redis.conf
# maxmemory-policy noeviction
# volatile-lru -> Evict using approximated LRU among the keys with an expire set.
# allkeys-lru -> Evict any key using approximated LRU.
# volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
# allkeys-lfu -> Evict any key using approximated LFU.
# volatile-random -> Remove a random key among the ones with an expire set.
# allkeys-random -> Remove a random key, any key.
# volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
# noeviction -> Don't evict anything, just return an error on write operations.
先从算法来看:
LRU,Least Recently Used:最近最少使用。判断最近被使用的时间,目前最远的数据优先被淘汰。
LFU,Least Frequently Used,最不常用,4.0 版本新增。
random,随机删除。
策略 | 含义 |
volatile-lru | 根据LRU 算法删除设置了超时属性(expire)的键,直到腾出足够内存为止。如果没有可删除的键对象,回退到noeviction 策略。 |
allkeys-lru | 根据LRU 算法删除键,不管数据有没有设置超时属性,直到腾出足够内存为止。 |
volatile-lfu | 在带有过期时间的键中选择最不常用的。 |
allkeys-lfu | 在所有的键中选择最不常用的,不管数据有没有设置超时属性。 |
volatile-random | 在带有过期时间的键中随机选择。 |
allkeys-random | 随机删除所有键,直到腾出足够内存为止。 |
volatile-ttl | 根据键值对象的ttl 属性,删除最近将要过期数据。如果没有,回退到noeviction 策略。 |
noeviction |
默认策略,不会删除任何数据,拒绝所有写入操作并返回客户端错误信息(error)OOM command not allowed when used memory,此时Redis 只响应读操作。 |
如果没有符合前提条件的key 被淘汰,那么volatile-lru、volatile-random 、volatile-ttl 相当于noeviction(不做内存回收)。
动态修改淘汰策略:
redis> config set maxmemory-policy volatile-lru
建议使用volatile-lru,在保证正常服务的情况下,优先删除最近最少使用的key。
Redis中的淘汰策略相关推荐
- redis高级-内存淘汰策略
目录 一.redis缓存过期淘汰策略 1.redis默认内存 2.修改redis内存 3.查看redis内存情况 二.redis内存超出了设置的最大值会怎么样 1.设置1个字节之后再赋值,会爆OOM ...
- Redis的常用淘汰策略以及算法实现
一.Redis的内存配置 1,Redis配置内存为多少合适? 默认:如果不设置最大内存大小或者设置最大内存大小为0,在64为操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存. 极限情况: ...
- Redis——》内存淘汰策略
推荐链接: 总结-->[Java] 总结-->[Mysql] 总结-->[Redis] 总结-->[Spring] 总结-->[S ...
- Redis 的内存淘汰策略问题
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 33h.co/ewcf Redis是基于内存的 ...
- Redis中的过期策略
Reids 所有的数据都是存储在内存中的,在某些情况下需要对占用的内存空间进行回收.内存回收主要分为两类,一类是key 过期,一类是内存使用达到上限(max_memory)触发内存淘汰. 过期策略 要 ...
- Redis的内存淘汰策略问题
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 来源:33h.co/ewcf Redis是基于内存的key-value数据 ...
- Redis的内存淘汰策略
Redis占用内存大小 我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小. 1.通过配置文件配置 ...
- php redis hset过期时间,详解Redis中数据过期策略
相信大家对Redis中数据过期有点了解,本文主要介绍了Redis中的数据过期策略,文中通过示例代码介绍的很详细,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友可以参考借鉴,希望能帮助到大家 ...
- redis之数据淘汰策略(三)lfu
因为redis的lru的淘汰策略关注的是key的访问时间,如果是一次性的遍历key那种操作,将导致很多不在访问的key滞留在内存中,将立即需要访问的数据淘汰出去. 因此在redis4.0.0中引入了l ...
最新文章
- 在CentOS 6.6 64bit上安装截图软件shutter
- 半导体物理与器件pdf施敏_西湖大学工学院先进固态半导体实验室行政助理招聘,户籍专业不限!...
- 试试回答Frankyang的问题-什么样的人适合攻读博士学位?
- 开发者的实用 Vim 插件(一)
- sqlite数据库的基本增删改查操作
- Response.Write具体介绍
- 新浪安装weiphp2.0的方法
- oracle ignore_Oracle 数据库常用操作语句,速速收藏
- Golang 新手入门教程(一):Go 安装与配置
- minio权限之IAM policy配置及用户赋权
- 转(逍遥子)Mosquito使用SSL/TLS进行安全通信时的使用方法
- 网站优化基本技巧(网站优化的主要工作是什么)
- 日常水文章之Linux+arm+阿里IOT sdk+Cmake
- 爱快固件是Linux系统吗,爱快硬路由和软路由系统有什么区别
- 2021年服创国赛参赛小结
- 2021-2027全球与中国铝质气雾罐市场现状及未来发展趋势
- mysql 数据精确度_mysql数据精度丢失问题深入探讨
- vue中使用echarts-gl(3d环形图)
- 彭于晏简单网页制作(HTML和css)
- 【雷达与对抗】【2014.09】无源双基地雷达系统的目标检测与成像