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

Sha*_*s88 3 python redis

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

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

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

Ros*_*nko 8

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

config get <option-name>
Run Code Online (Sandbox Code Playgroud)

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

redis 127.0.0.1:6379> config get maxmemory
1) "maxmemory"
2) "0"
Run Code Online (Sandbox Code Playgroud)

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

redis 127.0.0.1:6379> config get maxmemory-policy
1) "maxmemory-policy"
2) "volatile-lru"
Run Code Online (Sandbox Code Playgroud)

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

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

  1. volatile-lru - >使用LRU算法删除带有过期集的密钥
  2. allkeys-lru - >根据LRU算法删除任何密钥
  3. volatile-random - >删除带有过期集的随机密钥
  4. allkeys-> random - >删除随机密钥,任意密钥
  5. volatile-ttl - >删除最近的到期时间(次要TTL)的密钥
  6. noeviction - >根本不会过期,只是在写操作上返回错误

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

>>> import redis
>>> c = redis.Redis()
>>> print c.config_get('maxmemory')
{'maxmemory': '0'}
Run Code Online (Sandbox Code Playgroud)