Redis-当Redis内存用尽时会做何处理?

Redis-当Redis内存用尽时会做何处理?

泛泛之交 发布于 2017-07-23 字数 134 浏览 1071 回复 2

Redis2.0+在内存用尽时会做何处理 ?
它是如何决定哪些数据该被移除,哪些被维持在内存的?

希望有这方面经验的大牛帮帮忙。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晚风撩人 2017-11-03 2 楼

定期检测并干掉 expire 的数据,这样还耗尽的话,就交换了,只维持 hot 数据在内存中。

归属感 2017-08-27 1 楼

如果你打开虚拟内存功能,当内存用尽时, Redis就会把那些不经常使用的数据存储到磁盘。
如果Redis里的虚拟内存被禁了,他就会用上操作系统的虚拟内存(交换内存),同时性能急剧下降。
你可以配置maxmemory参数,来避免Redis默认再分配更多的内存。

在较新版本的Redis配置文件中使用了特别的设置选项,当我需要回收内存的时候。
有5种选项规则:

volatile-lru:在使用了过期设置的集合中,尝试删除一个最近没在用的键。
volatile-tt:在使用了过期设置的集合中,尝试删除一个有较短expire时间的键。
volatile-random:在使用了过期设置的集合中随机删除一个键。
allkeys-lru:跟volatile-lru类似,但它会将每一种类型键都移除,不管是有效还是过期的只要设置了过期时间。
allkeys-random:跟volatile-random类似,但它会将每一种类型键都移除,不管是有效还是过期的只要设置了过期时间。

参考文档:
http://antirez.com/post/redis-as-LRU-cache.html
http://eli.thegreenplace.net/2009/10/30/handling-out-of-memory-conditions-in-c/