Redis хэш занимает больше памяти, чем установлено - как оптимизировать? - PullRequest
0 голосов
/ 12 мая 2019

Я пишу документ, чтобы предотвратить обработку дубликатов.Я использую Redis для этого.

Я использовал два варианта.set и hash.Оба выполняют insert и exists в постоянное время.

Set: - Структура хранения

serviceId:[0 to 30]: список обработанных идентификаторов [2019020100000000]

Образец:

0 - 2019020100000000, 2019020100000001, etc..
1 - 2019020100000000, 2019020100000001, etc..
2 - 2019020100000000, 2019020100000001, etc..
3 - 2019020100000000, 2019020100000001, etc..
4 - 2019020100000000, 2019020100000001, etc..

Итак, я взял 5 services.Каждый обработан 6 million records.Общий объем памяти, занимаемый set for 5 services is 1.64GB [316MB each]

Hash:

service Id: [Имя хэша]: id[i.e] 2019020100000000: [имя ключа] value is 1

Образец:

0 : {2019020100000000:1, 2019020100000001:1, etc...}
1 : {2019020100000000:1, 2019020100000001:1, etc...}
2 : {2019020100000000:1, 2019020100000001:1, etc...}
3 : {2019020100000000:1, 2019020100000001:1, etc...}
4 : {2019020100000000:1, 2019020100000001:1, etc...}

Я использовал 1 в качестве значения.Мой вариант использования - хранить список идентификаторов, обработанных сервисом.Здесь 0-4 сервис.2019 * являются идентификаторами.

Я взял такой же 5 services[denoted by 0 to 4].Каждый обработан 7.5 million records.Общая занятая память 2.29GB.408MB occupied by each service.

Если я увижу углубленно, поставлю обработанные 6м записи и займет 316мб.Точно 53 байта на запись в наборе.

Но хэш занимает 4 МБ больше для 7,5 миллионов записей.[7,5 млн * 53 байта = 404 МБ].Но информация говорит 408MB.

Это единственный экземпляр Redis.

Я читаю в нескольких местах, что хэш занимает меньше памяти.Но я вижу, что больше памяти занято в моем случае использования.

Как я могу оптимизировать или изменить что-то, что приводит к уменьшению занимаемой площади для хэша?

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