日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

key设计 短信验证存redis_Redis存储Key的一种设计实现方式:模式匹配

發布時間:2025/3/21 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 key设计 短信验证存redis_Redis存储Key的一种设计实现方式:模式匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

Redis是Key-Value數據庫,存儲的時候需要一個唯一的Key值,查詢的時候根據根據key值進行查詢,但是Redis畢竟只是key-value存儲,所以有很多局限性。例如:

(1)無法實現多條件組合的查詢,如:

age > 25 AND name like 'A%'1

硬要實現的話需要多條命令并計算并集或交集。

(2)模糊查詢中文比較費勁;

因此,如何設計一個合適的Key來優化我們的查詢操作,是一個比較有意義的事情。

對于Key的設計網上有很多資料,但對我來說,都太過于凌亂,并沒有找到一個合適的方案。下邊,和大家一起學習一種較為簡單的模式匹配方式的Key值設計方法。

下邊的學習,主要介紹項目中使用的方式,有興趣的同學可以clone代碼一起學習,倉庫地址:

二、項目結構

SSM框架(Spring+Spring MVC+MyBatis),除了實現了對Redis的存儲,還通過注解的方式實現了數據庫的讀寫分離功能,實現了Spring對數據庫和Redis的事務管理,JSR303校驗,以及簡單的領域驅動DDD思想項目。

(1)項目結構:

(2)數據庫腳本:

(3)Spring配置文件位置:

其中,db-redis.xml文件中,如下代碼表示開啟Redis事務:

1

(4)Redis和MyBatis代碼位置:

三、Key值設計

上述,大致看了依托的項目結構,還沒有開始Redis Key值得設計,因此可以跳過,下邊主要學習一下,如何設計一種Key實現模式匹配查詢方式。

(1)情景假設

有實體對象SecurityUserDTO,如下:

這里假設用戶對象最常用的查詢條件是:用戶名(userName)和單位類型(unitType),因此,對于數據庫設計的時候,我們應該對這兩個屬性加上索引(題外話,完全和Key的設計無關!只是在于點一下這種最常見的數據庫加索引的方式)。

數據庫做了索引,那我,我們將數據存儲到Redis中的時候,如何在把他取出來那?

(2)首先,看一下最終存放在Redis中的數據格式:

其中:

SU1_縣級單位_wangwu_00000000351

可以分為四個部分:

1、簡化的實體對象名稱,就是SecurityUserDTO的簡寫,為了縮短Key的長度;

2、unitType的值,第一個查詢條件;

3、userName的值,第二個查詢條件;

4、ID的值,十位數值,前邊不足十位補0;1

2

3

4

(3)如何拼接,核心代碼如下:

assembleRedisKeyPrefix()方法:

assemberIdForKey()方法:

到這里,基本已經知道了大致拼接的過程,因此存放到Redis的數據是如下格式:

注:可以SecurityUserController#addUser(SecurityUserDTO userDTO)方法測試效果。

(4)如何查詢:

查詢的話可以參考SecurityUserController#listByCondition()方法:

查詢的時候,也是需要根據查詢條件構造Key值,然后讀取數據。

如果,查詢條件都有的話,構造的Key值如下:

如果,查詢條件只有一個的話,構造的Key值如下:

(5)修改數據和刪除數據:

因為ID在拼接的時候肯定是唯一的,因此,刪除的直接拼接為如下形式即可:

*391

四、總結

拼接Key的方式很簡單,以常用的查詢條件屬性作為拼接Key的依據,當然還可以通過其他的方式,但最主要的是如何去實踐。上述,很簡略的介紹了一下,因為對于這個項目來說,很多的細節,以博客的形式寫出來確實受限,還請大家移步代碼倉庫地址:

有什么疑問和可以改進的地方,希望多多留言,相互學習。

總結

以上是生活随笔為你收集整理的key设计 短信验证存redis_Redis存储Key的一种设计实现方式:模式匹配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。