Я пишу документ, чтобы предотвратить обработку дубликатов.Я использую 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.
Я читаю в нескольких местах, что хэш занимает меньше памяти.Но я вижу, что больше памяти занято в моем случае использования.
Как я могу оптимизировать или изменить что-то, что приводит к уменьшению занимаемой площади для хэша?