我正在编写一个python脚本,它将定期检查redis内存使用情况。现在我知道redis信息中的used_memory
或used_memory_human
将告诉我们当前redis正在使用多少内存。但我想知道已经使用了多少百分比的内存。
在redis信息中,我们没有像max_memory
这样的东西,因为redis占用了系统可用的尽可能多的内存。但是如果设置了maxmemory
中的redis.conf
选项怎么办?
如果我的系统有1 GB的RAM但maxmemory
设置为100 MB怎么办?那么我们怎么知道内存利用率呢?
答案 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时要删除的内容 到达了?您可以从以下五种行为中进行选择:
- volatile-lru - &gt;使用LRU算法删除带有过期集的密钥
- allkeys-lru - &gt;根据LRU算法删除任何密钥
- volatile-random - &gt;删除带有过期集的随机密钥
- allkeys-&gt; random - &gt;删除随机密钥,任意密钥
- volatile-ttl - &gt;删除具有最近到期时间(次要TTL)的密钥
- noeviction - &gt;不要过期,只需在写操作上返回错误
醇>
以下是使用pyredis如何实现类似结果的示例(假设我们在标准端口上有localhost数据库):
>>> import redis
>>> c = redis.Redis()
>>> print c.config_get('maxmemory')
{'maxmemory': '0'}