3

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

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

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

4

1 回答 1

9

您可以使用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:当达到 maxmemory 时,Redis 将如何选择要删除的内容?您可以在五种行为中进行选择:

  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'}
于 2012-08-14T10:46:35.450 回答