我正在使用redis进行缓存,但最近我遇到了使用内存量的问题 - 由于所有ram都已被使用,因此必须重启我的服务器。
这不是最大的机器,但我应该如何配置redis以避免同样的问题呢?
free -m
total used free shared buffers cached
Mem: 240 222 17 0 6 38
-/+ buffers/cache: 177 62
Swap: 255 46 209
我更改了以下设置:
超时60
数据库1
保存300 1
保存60 100
maxmemory 104857600
top
top - 14:15:28 up 1:19, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 49 total, 1 running, 48 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 245956k total, 228420k used, 17536k free, 6916k buffers
Swap: 262136k total, 47628k used, 214508k free, 39540k cached
答案 0 :(得分:5)
你可以在配置文件中使用“maxmemory”指令:当超过这个内存量时,Redis将使已经设置了过期的早期密钥到期(将要删除的第一个过期的密钥)。
答案 1 :(得分:1)
与memcached不同,redis应该是数据库;因此它不会自动删除旧值以为新的值腾出空间。
您必须明确设置每个键/值的过期时间,即使这样,如果您创建的键/值的速度要快,也会溢出。
答案 2 :(得分:1)
在Redis 2.0中使用Redis虚拟内存: http://antirez.com/post/redis-virtual-memory-story.html