Redis实战 内存淘汰机制
http://blog.720ui.com/2016/redis_action_02_maxmemory_policy/#volatile-lru
文章目录
redis 内存数据集大小上升到一定大小的时候,就会进行数据淘汰策略。
如何配置
我们通过配置redis.conf中的maxmemory这个值来开启内存淘汰功能。
# maxmemory
值得注意的是,maxmemory为0的时候表示我们对Redis的内存使用没有限制。
根据应用场景,选择淘汰策略
# maxmemory-policy noeviction
我们来了解下,内存淘汰的过程
首先,客户端发起了需要申请更多内存的命令(如set)。
然后,Redis检查内存使用情况,如果已使用的内存大于maxmemory则开始根据用户配置的不同淘汰策略来淘汰内存(key),从而换取一定的内存。
最后,如果上面都没问题,则这个命令执行成功。
动态改配置命令
此外,redis支持动态改配置,无需重启。
设置最大内存
config set maxmemory 100000
设置淘汰策略
config set maxmemory-policy noeviction
内存淘汰策略
volatile-lru
从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。redis并不是保证取得所有数据集中最近最少使用的键值对,而只是随机挑选的几个键值对中的, 当内存达到限制的时候无法写入非过期时间的数据集。
volatile-ttl
从已设置过期时间的数据集中挑选将要过期的数据淘汰。redis 并不是保证取得所有数据集中最近将要过期的键值对,而只是随机挑选的几个键值对中的, 当内存达到限制的时候无法写入非过期时间的数据集。
volatile-random
从已设置过期时间的数据集中任意选择数据淘汰。当内存达到限制的时候无法写入非过期时间的数据集。
allkeys-lru
从数据集中挑选最近最少使用的数据淘汰。当内存达到限制的时候,对所有数据集挑选最近最少使用的数据淘汰,可写入新的数据集。
allkeys-random
从数据集中任意选择数据淘汰,当内存达到限制的时候,对所有数据集挑选随机淘汰,可写入新的数据集。
no-enviction
当内存达到限制的时候,不淘汰任何数据,不可写入任何数据集,所有引起申请内存的命令会报错。
如何选择淘汰策略
下面看看几种策略的适用场景
allkeys-lru:如果我们的应用对缓存的访问符合幂律分布,也就是存在相对热点数据,或者我们不太清楚我们应用的缓存访问分布状况,我们可以选择allkeys-lru策略。
allkeys-random:如果我们的应用对于缓存key的访问概率相等,则可以使用这个策略。
volatile-ttl:这种策略使得我们可以向Redis提示哪些key更适合被eviction。
另外,volatile-lru策略和volatile-random策略适合我们将一个Redis实例既应用于缓存和又应用于持久化存储的时候,然而我们也可以通过使用两个Redis实例来达到相同的效果,值得一提的是将key设置过期时间实际上会消耗更多的内存,因此我们建议使用allkeys-lru策略从而更有效率的使用内存。
相关文章
- 利用Redis简化数据库访问(redis做数据库缓存)
- Redis:实现快速存取的内存数据库(redis内存数据库)
- Redis:让内存数据库更灵活(redis内存数据库)
- 飞速储存:Redis 内存数据库(redis内存数据库)
- Redis 开发指南:实现高效的缓存管理(redis开发规范)
- 阿里云推出强大的Redis版数据库,让数据管理更便捷(阿里云数据库redis版)
- 如何配置Redis端口?(redis端口配置)
- 如何关闭Redis服务(怎么停掉redis)
- 探索Redis内存库的秘密(查看redis内存库)
- 内存如何优化单个Redis 3G内存空间(单个redis只有3g)
- 开发如何开启Redis开发之路(如何开始redis)
- 保存文件到Redis缓存实现数据的安全保存(保存文件到redis缓存)
- 数据存储用Redis保存点赞信息轻松完成工作(使用redis实现点赞)
- 使用Redis解决限流问题(使用redis做限流)
- Redis脏读晦涩的技术挑战(对redis脏读)
- 利用磁盘存储解决方案Redis释放内存的威力(基于磁盘redis)
- Redis究竟需不需要设置内存(redis需要设置内存吗)
- Redis数据库如何保障数据安全(redis需要备份把)
- 排查Redis集群故障排查实战(redis 集群 故障)
- Redis集群已经完全成熟(redis集群成熟吗)
- Redis集群实战实现高性能分布式数据存储(redis集群实操)
- 红色魔法理解Redis集群的命中原理(redis集群 命中原理)
- Redis集群优化内存使用方式实现增长(redis集群内存增长)
- 红色乐趣实现Redis集群交易(redis集群交易)
- Redis跳表的实战技术应用(redis跳表实战)
- 使用Redis统计网站访问量,让网站运行更加高效(redis网站访问统计)
- Redis实战从入门到精通(redis课程目录)