Redis基础、高级特性与性能调优-内存管理与数据淘汰机制
2017-08-07 00:00
656 查看
内存管理与数据淘汰机制
最大内存设置
默认情况下,在32位OS中,Redis最大使用3GB的内存,在64位OS中则没有限制。在使用Redis时,应该对数据占用的最大空间有一个基本准确的预估,并为Redis设定最大使用的内存。否则在64位OS中Redis会无限制地占用内存(当物理内存被占满后会使用swap空间),容易引发各种各样的问题。
通过如下配置控制Redis使用的最大内存:
maxmemory 100mb
在内存占用达到了maxmemory后,再向Redis写入数据时,Redis会:
根据配置的数据淘汰策略尝试淘汰数据,释放空间
如果没有数据可以淘汰,或者没有配置数据淘汰策略,那么Redis会对所有写请求返回错误,但读请求仍然可以正常执行
在为Redis设置maxmemory时,需要注意:
如果采用了Redis的主从同步,主节点向从节点同步数据时,会占用掉一部分内存空间,如果maxmemory过于接近主机的可用内存,导致数据同步时内存不足。所以设置的maxmemory不要过于接近主机可用的内存,留出一部分预留用作主从同步。数据淘汰机制
Redis提供了5种数据淘汰策略:
volatile-lru:使用LRU算法进行数据淘汰(淘汰上次使用时间最早的,且使用次数最少的key),只淘汰设定了有效期的key
allkeys-lru:使用LRU算法进行数据淘汰,所有的key都可以被淘汰
volatile-random:随机淘汰数据,只淘汰设定了有效期的key
allkeys-random:随机淘汰数据,所有的key都可以被淘汰
volatile-ttl:淘汰剩余有效期最短的key
最好为Redis指定一种有效的数据淘汰策略以配合maxmemory设置,避免在内存使用满后发生写入失败的情况。
一般来说,推荐使用的策略是volatile-lru,并辨识Redis中保存的数据的重要性。对于那些重要的,绝对不能丢弃的数据(如配置类数据等),应不设置有效期,这样Redis就永远不会淘汰这些数据。对于那些相对不是那么重要的,并且能够热加载的数据(比如缓存最近登录的用户信息,当在Redis中找不到时,程序会去DB中读取),可以设置上有效期,这样在内存不够时Redis就会淘汰这部分数据。
配置方法:volatilemaxmemory-policy
-lru#默认是noeviction,即不进行数据淘汰
相关文章推荐
- Redis 基础、高级特性与性能调优
- Redis 基础、高级特性与性能调优
- Redis基础、高级特性与性能调优
- redis基础,高级特性与性能调优
- Redis基础、高级特性与性能调优-redis的持久化
- Redis基础、高级特性与性能调优
- Redis基础、高级特性与性能调优
- Redis 宝典 | 基础、高级特性与性能调优
- Redis基础、高级特性与性能调优-Redis的数据结构和相关常用命令
- Redis基础、高级特性与性能调优
- redis基础,高级特性和性能调优-redis的优缺点
- Redis基础、高级特性与性能调优-pilelining,事务,scripting
- Redis基础、高级特性与性能调优
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用002-Flink的内存管理002
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink高级特性与高级应用003-Flink的内存管理003
- Redis高级实用特性(持久化机制、发布订阅消息、虚拟内存的使用)
- Oracle兼容之层次查询:层次查询高级特性分析-性能调优
- javaSE_8系列博客——Java语言的特性(二)--高级语言的基础知识(3)-- 基本数据类型的默认值
- spark性能优化:高级篇(数据倾斜调优,shuffle调优)
- Redis 数据淘汰机制