问答详情
源自:2-1 redis后端缓存优化编码

为什么不用redis的hash来存储对象?

二进制序列化反序列化效率更高吗?

提问者:秋田君 2017-08-25 10:35

个回答

  • qq_飞飞起来_0
    2017-08-30 11:57:37
    已采纳

    我来给你解释:

    第一,通过jedis 储存对象有大概三种,one:本课程的序列化成byte字节 ,最终存byte字节,two:对象转hashmap,也就是你想表达的hash的形式,最终存map,three:对象转json,最终存json,其实也就是字符串

    第二:其实如果你是平常的项目,并发不高,三个选择都可以,反而你说的hash的形式更加灵活,可以对象的单个属性,但是来了,秒杀的场景的情况下,三者的效率差别很大的

    第三:结果如下

    10w数据          时间    内存占用    

    存json               10s        14M    

    存byte               6s            6M    

    存jsonMap      10s          20M    

    存byteMap      4s             4M    

    取json              7s         

    取byte              4s         

    取jsonmap      7s         

    取bytemap      4s         

    第四:你该说了,bytemap最快啊,为啥不用啊,因为作者用了超级强悍的序列化工具啊,以上测试基于java的序列化,如果改了序列化工具,你可以测试下。

    因本人能力有限,以上可能有谬论,恳请指正