3

我正在使用 redis 进行缓存,但最近我遇到了所用内存量的问题 - 由于所有内存都已被消耗,我不得不重新启动我的服务器。

它不是最大的机器,但我应该如何配置 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
最大内存 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
4

3 回答 3

5

您可以在配置文件中使用“maxmemory”指令:当超过此内存量时,Redis 将过期已设置过期的较早键(将较早过期的键是第一个将被删除的键)。

于 2010-08-19T19:32:05.407 回答
1

与 memcached 不同,redis 应该是一个数据库;因此它不会自动删除旧值以为新值腾出空间。

您必须为每个键/值显式设置过期时间,即使这样,如果您创建键/值的速度比这更快,您也可能会溢出。

于 2010-08-02T12:23:31.000 回答
1

在 Redis 2.0 中使用 Redis 虚拟内存:http: //antirez.com/post/redis-virtual-memory-story.html

于 2010-08-05T21:03:56.307 回答