Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介( 四 )
一、项目结构
【Java进阶指南|Redis存储Key设计实现方式,Redis实战和核心原理详解:Redis简介】SSM框架(Spring+SpringMVC+MyBatis) , 除了实现了对Redis的存储 , 还通过注解的方式实现了数据库的读写分离功能 , 实现了Spring对数据库和Redis的事务管理 , JSR303校验 , 以及简单的领域驱动DDD思想项目 。
(1)项目结构:
文章图片
(2)数据库脚本:
文章图片
文章图片
(3)Spring配置文件位置:
文章图片
其中 , db-redis.xml文件中 , 如下代码表示开启Redis事务:
(4)Redis和MyBatis代码位置:
文章图片
二、Key值设计
上述 , 大致看了依托的项目结构 , 还没有开始RedisKey值得设计 , 因此可以跳过 , 下边主要学习一下 , 如何设计一种Key实现模式匹配查询方式 。
(1)情景假设
有实体对象SecurityUserDTO , 如下:
文章图片
这里假设用户对象最常用的查询条件是:用户名(userName)和单位类型(unitType) , 因此 , 对于数据库设计的时候 , 我们应该对这两个属性加上索引(题外话 , 完全和Key的设计无关!只是在于点一下这种最常见的数据库加索引的方式) 。
文章图片
数据库做了索引 , 那我 , 我们将数据存储到Redis中的时候 , 如何在把他取出来那?
(2)首先 , 看一下最终存放在Redis中的数据格式:
文章图片
其中:SU1_县级单位_wangwu_0000000035
可以分为四个部分:
1、简化的实体对象名称 , 就是SecurityUserDTO的简写 , 为了缩短Key的长度;2、unitType的值 , 第一个查询条件;3、userName的值 , 第二个查询条件;4、ID的值 , 十位数值 , 前边不足十位补0;
(3)如何拼接 , 核心代码如下:
文章图片
assembleRedisKeyPrefix()方法:
文章图片
assemberIdForKey()方法:
文章图片
到这里 , 基本已经知道了大致拼接的过程 , 因此存放到Redis的数据是如下格式:
文章图片
注:可以SecurityUserController#addUser(SecurityUserDTOuserDTO)方法测试效果 。
(4)如何查询:
查询的话可以参考SecurityUserController#listByCondition()方法:
文章图片
查询的时候 , 也是需要根据查询条件构造Key值 , 然后读取数据 。
如果 , 查询条件都有的话 , 构造的Key值如下:
推荐阅读
- 程序员■Java程序员必知:HashMap进行put操作会不会引起死循
- 课工场郑州翔天信鸽|JavaScript最常用,java是主流,JetBrains公布编程语言排名
- 猿灯塔|POI Excel,Java架构-Apache
- 【Java】github上标星70.5k,贼火的Java突击手册,全面详细对标阿里P7
- 银河航天漫游指南|你以为美国商业航天那么牛只是因为马斯克?更多原因在这里!
- 科技怪人|C++程序员的学习进阶之路之书籍篇
- 「编程」后台编程语言互相争执,为何前端公认JavaScript?
- 腾讯@JAVA如何连接数据库
- 数码科技指南|C8量子点Pro电视当之无愧,国产音画巅峰!TCL
- Java■Java仍然排名第一,但Kotlin不容小视了