天天看点

Redis开发运维实践开发设计规范之内存考虑4.4 内存考虑

只要有可能的话,就尽量使用散列键而不是字符串键来储存键值对数据,因为散列键管理方便、能够避免键名冲突、并且还能够节约内存。

如果采用序列化考虑通用性,请采用json相关的库进行处理,如果对内存大小和速度都很关注的,推荐使用messagepack进行序列化和反序列化

如果需要计数器,请将计数器的key通过天或者小时分割,比如下边的设计:

Redis开发运维实践开发设计规范之内存考虑4.4 内存考虑

需要修改为:

Redis开发运维实践开发设计规范之内存考虑4.4 内存考虑

更好的一个设计是采用hash:

Redis开发运维实践开发设计规范之内存考虑4.4 内存考虑

各种数据结构及其占用内存的benchmark测试

set个数

每个set的元素总数

内存占用

key大小

value大小

100

1.88m

7

36

1000

10.75m

10000

111.12m

11.59m

8

100.35m

1.08g

108.71m

9

996.23m

zset个数

每个zset的元素总数

1.62m

49

15.91m

162.06m

8.71m

151.87m

1.58g

79.83m

10

1.48g

hash个数

每个hash的元素总数

1.63m

6.29m

156.91m

55.59m

1.52g

548.58m

list个数

每个list的元素总数

1.23m

10.00m

92.40m

4.83m

92.52m

916.47m

40.76m

917.69m

string个数

846.79k

13

966.29k

2.16m

100000

130.88m

<b></b>

<b>redis开发运维实践指南</b><b>本文为《redis开发运维实践指南》内容,该书作者为黄鹏程,已授权云栖社区转载。</b>

继续阅读