Понимание потребления памяти ключом в redis - PullRequest
0 голосов
/ 12 декабря 2018

Я использую локальный сервер Redis.Был один плохой ключ в Redis, который занимал много памяти.Перед удалением этого ключа «информационная память» показала 5,3 ГБ как занятую память.Этот плохой ключ занимал около 800 МБ данных.Это основано на выводе «объекта отладки».

После удаления этого ключа память почти удваивала освобождаемый размер.Ожидание было около 800 МБ.

Есть идеи, что за этим стоит?Работает на Ubuntu.

127.0.0.1:6379[3]> info
# Server
redis_version:2.8.9

127.0.0.1:6379[3]> info memory
# Memory
used_memory:5746884728
used_memory_human:5.35G
used_memory_rss:6382206976
used_memory_peak:8865352096
used_memory_peak_human:8.26G
used_memory_lua:37888
mem_fragmentation_ratio:1.11
mem_allocator:jemalloc-3.2.0

127.0.0.1:6379[3]> debug object c43d3e42-7e63-47f3-bb63-b58a897c29a6
Value at:0x7f77a1db1d10 refcount:1 encoding:linkedlist 
serializedlength:814237852 lru:994050 lru_seconds_idle:99559
(5.53s)


127.0.0.1:6379[3]> del c43d3e42-7e63-47f3-bb63-b58a897c29a6
(integer) 1
(1.78s)

127.0.0.1:6379[3]> info memory
# Memory
used_memory:4145366968
used_memory_human:3.86G
used_memory_rss:4375691264
used_memory_peak:8865352096
used_memory_peak_human:8.26G
used_memory_lua:37888
mem_fragmentation_ratio:1.06
mem_allocator:jemalloc-3.2.0

Спасибо.

1 Ответ

0 голосов
/ 12 декабря 2018

DEBUG OBJECT показывает сериализованную длину объекта.Это размер сериализованных данных при сохранении объекта на диске в формате RDB.Это НЕ размер объекта в памяти.

При сохранении данных на диске Redis может сжимать данные.Поэтому обычно сериализованная длина меньше размера объекта в памяти.

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