在设置了maxmemory限制时,在python中找出redis内存使用情况

时间:2012-08-14 10:38:34

标签: python redis

我正在编写一个python脚本,它将定期检查redis内存使用情况。现在我知道redis信息中的used_memoryused_memory_human将告诉我们当前redis正在使用多少内存。但我想知道已经使用了多少百分比的内存。

在redis信息中,我们没有像max_memory这样的东西,因为redis占用了系统可用的尽可能多的内存。但是如果设置了maxmemory中的redis.conf选项怎么办?

如果我的系统有1 GB的RAM但maxmemory设置为100 MB怎么办?那么我们怎么知道内存利用率呢?

1 个答案:

答案 0 :(得分:7)

您可以使用CONFIG命令获取有关最大内存和内存策略的所需信息。获取配置信息的语法是:

config get <option-name>

以下是如何获得maxmemory设置的示例:

redis 127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "0"

以下是您如何获得maxmemory-policy设置的示例:

redis 127.0.0.1:6379> config get maxmemory-policy
1) "maxmemory-policy"
2) "volatile-lru"

maxmemory管理有不同的策略(您可以从示例Redis配置文件中获取它们的描述):

  

MAXMEMORY POLICY:Redis将如何选择maxmemory时要删除的内容   到达了?您可以从以下五种行为中进行选择:

     
      
  1. volatile-lru - &gt;使用LRU算法删除带有过期集的密钥
  2.   
  3. allkeys-lru - &gt;根据LRU算法删除任何密钥
  4.   
  5. volatile-random - &gt;删除带有过期集的随机密钥
  6.   
  7. allkeys-&gt; random - &gt;删除随机密钥,任意密钥
  8.   
  9. volatile-ttl - &gt;删除具有最近到期时间(次要TTL)的密钥
  10.   
  11. noeviction - &gt;不要过期,只需在写操作上返回错误
  12.   

以下是使用pyredis如何实现类似结果的示例(假设我们在标准端口上有localhost数据库):

>>> import redis
>>> c = redis.Redis()
>>> print c.config_get('maxmemory')
{'maxmemory': '0'}