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