Как я могу получить объем памяти определенного ключа в Redis? - PullRequest
0 голосов
/ 04 марта 2019

Я новичок в 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 голосов
/ 04 марта 2019

Вы используете очень старую версию redis.Команда MEMORY недоступна в этой версии, поэтому нет точного способа получить эту информацию.Однако вы можете приблизить эту информацию с помощью команды DUMP.

Просто позвоните DUMP _kombu.binding.celery и сохраните результаты в файл.Результатом являются некоторые символы и escape-последовательности.Когда вы загружаете этот файл в среду типа узла, вы можете посмотреть на длину строки и умножить на 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
0 голосов
/ 04 марта 2019

MEMORY USAGE _kombu.binding.celery даст вам количество байтов, которые ключ и значение должны быть сохранены в оперативной памяти.

Здесь - документ для команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...