Redis哈希占用的内存多于设置的内存-如何优化?

时间:2019-05-12 08:02:20

标签: redis

我正在编写poc来防止重复处理。我为此使用redis。

我使用了两个选项。 sethash。两者均在固定时间执行insertexists

Set:-存储结构

serviceId:[0 to 30]:已处理ID [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 recordsset 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作为值。我的用例是存储由服务处理的ID列表。这里0-4是服务。 2019 *是ID。

我已使用相同的5 services[denoted by 0 to 4]。每个已处理的7.5 million records。占用的总内存为2.29GB408MB occupied by each service

如果我深入查看,请设置已处理的6m条记录,并占用316mb。一组中每个条目恰好53字节。

但是散列在750万条记录中的占用量增加了4mb。 [750万* 53字节= 404MB]。但信息显示为408MB。

这是单个Redis实例。

我在多个地方读到散列占用更少的内存。但是我发现用例中占用了更多的内存。

如何优化或更改某些东西,以减少哈希的占用空间?

0 个答案:

没有答案