网站首页 > 精选教程 正文
在用redis做缓存时,我们通常都是把数据中一些经常用于查询,并且很少修改的数据放到redis中,这样用户在查询数据时,可以先看redis缓存中是否有数据,如果有也返回,如果没有,在去数据库中查询,将查询到的结果在回写到redis中,这样就可以大大的提高查询效率。
那么问题来了,我们如何将一个对象放到redis缓存中呢?因为redis是key-value格式的,所以我们需要分别去讨论key和value分别是怎么样存储的。
1. key的存储
key的存储比较简单,一般用表名.#id,或者用实体类名.#id即可,用哪种都无所谓,没啥区别,如果说做了水平分库的话,就在前面加了库名,即库名.#表名.#id或者库名.#实体类名.#id
2.value的存储
value的存储通常有下面三种方式:
将对象序列化成字符串存储
将对象转成json字符串存储
用hash存储
我通常用的都是第一种方式来存储,因为第一种方式和下面两种方式比起来,不仅占用的空间会比较小,而且效率也比较高。
但是也有极特殊的情况,就是这个对象比较大,字段比较多,但是我每次用的时候,只是用到其中一个或者其中几个字段,这种情况是比较适合用hash存储的,但是这种情况太少了,至少我是没遇到过的,所以我也从来没有用过hash来存储对象。按照我的理解,一旦出现了这种情况,就是设计的有问题了,在一个大对象里面,每次都只会用到几个字段,大部分字段都用不到,那你干嘛不对这个对象做下拆分呢?也可能是我考虑的不太全面,欢迎大家指正。
这都是我的一些个人看法,大家如果有不同意见,欢迎评论区讨论,让我们共同进步[微笑]
猜你喜欢
- 2025-01-05 什么是JSON?
- 2025-01-05 SpringBoot读取资源目录中的JSON文件方法
- 2025-01-05 Fastjson妙用之@JSONField注解
- 2025-01-05 程序员必备的JSON到代码的快速转换神器,支持多种语言(C#、Go、Swift、C++、Java、TypeScript 等)
- 2025-01-05 Java安全-Java Vuls(Fastjson、Weblogic漏洞复现)
- 2025-01-05 Jackson 反序列化必修课:未知属性的"坑",你踩对了吗?
- 2025-01-05 一文带你认识目前最快的Java框架:Vert.x
- 2025-01-05 @JsonProperty详细说明
- 2025-01-05 Java 反射 和 Java new 的效率有什么区别,亲测相差100倍
- 2025-01-05 Python技能:JSON文件的语法和解析
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)