美文网首页
Redis测试优化总结

Redis测试优化总结

作者: Suncy | 来源:发表于2023-04-06 18:08 被阅读0次

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

    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测试优化总结

          本文链接:https://www.haomeiwen.com/subject/abruddtx.html