这是慕课网一门课程的提问,有一个回答很不错,我就摘抄过来了。链接
原问题:
为什么不用redis的hash来存储对象?
二进制序列化反序列化效率更高吗?
我来给你解释:
第一,通过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的序列化,如果改了序列化工具,你可以测试下。