如何获得Redis中特定键的内存占用量?

时间:2019-03-04 03:54:44

标签: redis

我是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

任何评论都非常受欢迎。非常感谢。

2 个答案:

答案 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