我需要Java代码来监控Redis的内存使用情况,因为Redis将所有数据存储在RAM中,如果内存已满,它就会崩溃。
看起来Redis使用整个OS内存,所以如果我在Java中使用"Runtime“方法,它是不正确的,因为它只计算JVM中的内存。
是否有任何Java方法来监视整个操作系统系统的内存使用情况,或者这些是某种神奇的Redis方法?
发布于 2014-03-07 19:06:15
您可以定期向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在本例中,它将被限制为2MB。
update maxmemory将防止在达到限制时进行新的写操作,并以错误响应;它将根据LRU策略开始删除键,该策略被分配给缓存。
https://stackoverflow.com/questions/22257700
复制相似问题