Redis测试优化总结

不同类型数据结构占用内存对比:

1.整型:当list或set中存储的元素为整型时:

当元素个数小于500个数字,使用Set占内存空间最小,redis底层实现使用了intset编码;
当元素个数大于512个数字,使用Set占内存空间最大,而且是list的数倍,redis底层实现使用了hashTable编码,hashTable内存占用大,读取速度快,相当于牺牲空间换时间。
test如下:
image.png

总结:整型数据,小于512使用SET,其他使用LIST ;
说明:所有数据结构的底层逻辑就是内存大小和读取速度总会有矛盾,所以数据结构的选择就是得在内存和读取速度上做出取舍,这种就比较考验程序员的经验和是否有清晰的思路。

2.String类型:当List或Set中存储的元素为String类型时:

跟元素个数关系不大,根据测试,使用List占用内存空间会比使用Set小很多;
test如下:
image.png

总结:如果量少,就几个,用啥都无关紧要,如果数据量略多,就使用List 而不要使用Set,因为Set为了去重和查询,会占用很大空间。

3.对象类型:当使用redis存储对象元素时,使用List存储Json的方式,单个内存体积相比较使用Hash拆分存储为多个的内存总和会更小,但如下图,虽然拆分50个存HASH比Json搞一起存一个的多了一些内存,但搞一起容易形成一个BIGKEY,就是单个缓存占用内存大(一般10K以上就算),所以还是建议首选HASH,Hash单个内存小,更新方便,而且查询更快

50个学生信息存储,内存最小是分成50个HASH(单个只占291),291*50 = 14550


image.png

100个学生信息存储,内存最小的是JSON字符串,不过内存到达了25479字节=24K,属于BIGKEY


image.png

说明,取Hash可使用Redis管道查询

存:


62621251f5b79ddb695b331059730a6.png

管道查询:


4dce2cf410f868dcd6996abb12a2027.png

你可能感兴趣的:(Redis测试优化总结)