成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Redis存儲Key的一種設計實現方式:模式匹配

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

 一、前言

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

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

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

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

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

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

[[236960]]

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

https://git.oschina.net/xuliugen/redis-demo.git

二、項目結構

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

(1)項目結構:

(2)數據庫腳本:

(3)Spring配置文件位置:

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

(4)Redis和MyBatis代碼位置:

三、Key值設計

上述,大致看了依托的項目結構,還沒有開始Redis Key值得設計,因此可以跳過,下邊主要學習一下,如何設計一種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(SecurityUserDTO userDTO)方法測試效果。

(4)如何查詢:

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

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

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

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

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

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

四、總結

拼接Key的方式很簡單,以常用的查詢條件屬性作為拼接Key的依據,當然還可以通過其他的方式,但最主要的是如何去實踐。 

責任編輯:武曉燕 來源: Java后端技術
相關推薦

2017-10-25 08:44:03

NVMe SSD數據存儲

2019-07-22 15:59:21

2024-02-26 00:00:00

sessionredis項目

2012-01-17 11:02:39

2015-04-17 10:21:37

云存儲附加存儲

2017-07-05 14:09:04

系統設計與架構java云計算

2022-08-18 09:38:02

Spring跨域

2023-05-11 07:30:10

KV存儲GC優化

2022-09-27 08:04:37

Adapter?設計模式

2021-08-06 16:57:39

存儲Redis數據類型

2012-12-25 10:48:35

IBMdW

2022-06-23 07:05:46

跳板機服務器PAM

2023-09-17 23:16:46

緩存數據庫

2023-01-26 23:46:15

2011-02-25 13:52:18

Proftpd管理

2011-02-25 13:52:18

Proftpd管理

2022-06-06 15:44:24

大數據數據分析思維模式

2009-06-03 15:38:37

Struts框架RBAC

2013-05-22 15:31:07

AOP的CGlib實現

2013-09-04 12:38:56

架構設計架構設計構思
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 性高朝久久久久久久3小时 av一区二区三区四区 | 亚洲喷水 | 亚洲精品女人久久久 | 天堂在线91 | 久久伊人亚洲 | 羞羞视频免费观看入口 | 中文字幕在线看 | 日韩91| 三级视频在线观看 | 久久精品一区二区三区四区 | 日韩精品亚洲专区在线观看 | 在线观看特色大片免费网站 | 综合中文字幕 | 一区二区在线看 | 一级片免费视频 | 亚洲一区二区三区视频 | 亚洲精品一区二区三区 | 亚洲精品一区二区三区四区高清 | 久久精品亚洲国产奇米99 | 精品免费国产一区二区三区 | 日本人和亚洲人zjzjhd | 久国产精品 | 色婷婷av777| 久久一| 国产乱码精品一区二区三区忘忧草 | 精品一区二区三区中文字幕 | 国产精品久久久久久久久久久新郎 | 一区二区国产在线观看 | 国产伦精品一区二区三区视频金莲 | 在线观看国产视频 | 欧美区日韩区 | 国产日韩欧美在线观看 | 犬夜叉在线观看 | 羞羞的视频免费看 | 色综合网站 | 久久久久成人精品亚洲国产 | 亚洲一区中文字幕 | 日本亚洲精品成人欧美一区 | 国产一区二区视频在线 | 久久久精品一区 | 国产h视频 |