redis缓存使用之二:redis以什么样的形式来存储对象

  • A+
所属分类:体育平台

redis缓存使用之二:redis以什么样的形式来存储对象

在用redis做缓存时,我们通常都是把数据中一些经常用于查询,并且很少修改的数据放到redis中,这样用户在查询数据时,可以先看redis缓存中是否有数据,如果有也返回,如果没有,在去数据库中查询,将查询到的结果在回写到redis中,这样就可以大大的提高查询效率。

那么问题来了,我们如何将一个对象放到redis缓存中呢?因为redis是key-value格式的,所以我们需要分别去讨论key和value分别是怎么样存储的。


1. key的存储

key的存储比较简单,一般用表名.#id,或者用实体类名.#id即可,用哪种都无所谓,没啥区别,如果说做了水平分库的话,就在前面加了库名,即库名.#表名.#id或者库名.#实体类名.#id

2.value的存储

value的存储通常有下面三种方式:

将对象序列化成字符串存储

将对象转成json字符串存储

用hash存储

我通常用的都是第一种方式来存储,因为第一种方式和下面两种方式比起来,不仅占用的空间会比较小,而且效率也比较高。

但是也有极特殊的情况,就是这个对象比较大,字段比较多,但是我每次用的时候,只是用到其中一个或者其中几个字段,这种情况是比较适合用hash存储的,但是这种情况太少了,至少我是没遇到过的,所以我也从来没有用过hash来存储对象。按照我的理解,一旦出现了这种情况,就是设计的有问题了,在一个大对象里面,每次都只会用到几个字段,大部分字段都用不到,那你干嘛不对这个对象做下拆分呢?也可能是我考虑的不太全面,欢迎大家指正。

这都是我的一些个人看法,大家如果有不同意见,欢迎评论区讨论,让我们共同进步[微笑]

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: