如果你打开虚拟内存功能,当内存用尽时, 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/