Java检查Redis内存使用情况

时间:2014-03-07 18:18:17

标签: java memory redis

我需要Java代码来监控Redis的内存使用情况,因为Redis会将所有数据存储到RAM中,如果内存已满,它会崩溃。

看起来Redis使用整个操作系统内存,所以如果我在Java中使用“Runtime”方法,那就不正确了,因为它只计算JVM中的内存。

是否有任何Java方法来监控整个OS系统的内存使用情况,或者这些是一些神奇的Redis方法?

1 个答案:

答案 0 :(得分:2)

您可以定期请求redis,发送INFO命令,并解析结果以获取used_memory的值,这是Redis内存分配器分配的字节数。

更新: Redis不会崩溃,它会交换 - 所以它的性能会大幅下降。您可以通过将used_memory_rss与used_memory进行比较来检测交换。 used_memory_rss远大于used_memory意味着交换发生。但在此之前,如果used_memory刚好低于可用于Redis的总内存,则可能需要进行交换。

如果您使用redis作为缓存,可以通过在配置文件中添加以下行来限制其内存消耗:

maxmemory 2mb 
maxmemory-policy allkeys-lru

在此示例中,它将限制为2 Mb。

<强>更新 当达到限制时,maxmemory将阻止新的写操作,并以错误响应;它将根据LRU策略开始删除密钥,该策略适用于缓存。