我是Redis的新手。如何获得Redis中特定键的内存占用量?
db0
1) "unacked_mutex"
2) "_kombu.binding.celery"
3) "_kombu.binding.celery.pidbox"
4) "_kombu.binding.celeryev"
我只想获取一个像"_kombu.binding.celery"
这样的特定键或一个像db0
这样的特定数据库的内存占用量,怎么获得呢?
redis_version:2.8.17
任何评论都非常受欢迎。非常感谢。
答案 0 :(得分:2)
class Adv(models.Model):
image = models.ImageField(upload_to=r'photos/%Y/%m/',
width_field = ?,
height_field = ?,
help_text='Image size: Width=1080 pixel. Height=1920 pixel',
将为您提供键和值需要存储在RAM中的字节数。
Here是该命令的文档。
答案 1 :(得分:2)
您正在运行非常老版本的Redis。 MEMORY
命令在该版本中不可用,因此没有获取此信息的精确方法。但是,您可以使用DUMP
命令来估算此信息。
只需调用DUMP _kombu.binding.celery
并将结果保存到文件中。结果是一些字符和转义序列。当将此文件加载到节点之类的环境中时,您可以查看字符串的长度并乘以2以获取字节数。这并不精确,但是通常会很接近。
这是您可以做的:
在Redis中:
$ redis-cli
127.0.0.1:6379> hset c 123 456
(integer) 0
127.0.0.1:6379> dump c
"\r\x12\x12\x00\x00\x00\r\x00\x00\x00\x02\x00\x00\xfe{\x03\xc0\xc8\x01\xff\t\x00\x10\xd4L \x908\x8b2"
在节点中:
$ node
> a="\r\x12\x12\x00\x00\x00\r\x00\x00\x00\x02\x00\x00\xfe{\x03\xc0\xc8\x01\xff\t\x00\x10\xd4L \x908\x8b2"
'\r\u0012\u0012\u0000\u0000\u0000\r\u0000\u0000\u0000\u0002\u0000\u0000þ{\u0003ÀÈ\u0001ÿ\t\u0000\u0010ÔL 82'
> a.length
30
这接近Redis通过MEMORY USAGE
提供的实际数量的一半:
127.0.0.1:6379> MEMORY USAGE c
(integer) 63