使用redis缓存对象,该选择json还是序列化呢。


使用redis缓存对象,该选择json还是序列化呢。

0     蕃薯哥哥 蕃薯哥哥  2016/02/17 19:20

如果对这个对象只有存取的操作,最好使用json。

如果在对象被缓存期间有对属性的操作,比如购物车,可能会更改购买数量,这时候最好使用map,不然你存json需要先取出来再修改再存储,很耗性能。

怎么使用map可以参考楼上的帖子。

 盲人摸象  2016/02/17 18:22   还有问答 

http://www.oschina.net/question/1458793_2141679

 盲人摸象  2016/02/17 18:21  介绍你看我的一篇博客   http://my.oschina.net/yuyidi/blog/499951     
 薛定谔的大鹿  2016/02/17 18:03 当然是json string ,序列化以后的对象,如果源对象的属性有修改,那么反序列化的时候就会报错。  googlespot  2016/02/17 17:42 首先Json就序列化的一种,不过是可读的文本不是二进制的。再者这里猜想问题是否是该用redis的hash还是String来存储  亭舸翁  2016/02/17 17:37 json也是序列化的一种嘛。当然也可以选择kyro,protobuf,hessian等。使用这些序列化方式而不是各语言内建的序列化机制的一个好处是,可以支持使用不同的编程语言进行修改或者读取。同时,就java而言,内建的序列化机制在时间和空间上相比json都没有啥优势  boonbai  2016/02/17 17:15 如果是数据完全可以使用JSON方式。毕竟redis直接set、get使用起来门槛低很多。redis是没有提供专用的设置对象方法,需要自己进行改写。如果是担心JSON转对象会消耗资源的情况,这个问题需要考量几个地方,第一点:就是使用的JSON转换lib是否就会存在性能问题。第二点:就是数据的数据量级别,如果是存储百万级的大数据对象,建议采用存储序列化对象方式。如果是少量的数据级对象,或者是数据对象字段不多,还是建议采用JSON转换成String方式。毕竟redis对存储字符类型这部分优化的非常好。具体采用的方式与方法,还要看你所使用的场景。  boonbai  2016/02/17 17:00 能用JSON就用JSON。可以将JSON转换成String进行存储。  兰儿飞飞  2016/02/17 16:59 当然序列化好一些,json再转回对象时也是要消耗资源的   举报   转 https://www.oschina.net/question/228694_2151535?sort=time