最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis模糊查詢的幾種實現(xiàn)方法

 更新時間:2024年02月18日 10:10:35   作者:IT利刃出鞘  
本文主要介紹了Redis模糊查詢的幾種實現(xiàn)方法,包括兩種方法KEYS , SCAN,具有一定的參考價值,感興趣的可以了解一下

簡介

說明

本文介紹Redis模糊查詢的方法。

官網(wǎng)網(wǎng)址

https://redis.io/commands/keys/

https://redis.io/commands/scan/

Redis模糊查詢鍵的方法

Redis提供了兩種模糊查詢鍵的方法:KEYS , SCAN。推薦用SCAN,下邊會介紹。

模糊查詢的通配符

KEYS和SCAN都支持glob通配符中的三個:*,?,[]:

  • *:通配任意多個字符
  • ?:通配單個字符
  • []:通配括號內(nèi)的某一個字符

示例

  • h?llo
    • 匹配 hello, hallo and hxllo
  • h*llo
    • 匹配 hllo、heeeello
  • h[ae]llo
    • 匹配 hello、hallo
    • 不匹配 hillo
  • h[^e]llo
    • 匹配 hallo、hbllo…
    • 不匹配 hello
  • h[a-b]llo 匹配 hallo and hbllo

KEYS

說明

KEYS指令會一次性查出所有滿足條件的key(沒有 offset、limit 參數(shù))。keys 算法是遍歷算法,復(fù)雜度是 O(n)。

數(shù)據(jù)量大時會有問題:redis 是單線程的,操作都是原子的,如果實例中有千萬級以上的 key,這個指令就會導(dǎo)致 Redis 服務(wù)卡頓,所有讀寫 Redis 的其它的指令都會被延后甚至?xí)瑫r報錯,可能會引起緩存雪崩甚至數(shù)據(jù)庫宕機。

指令格式

KEYS pattern

pattern即key的正則表達式。

示例

先寫入一些數(shù)據(jù):

192.168.xxx.21:6379[2]> set hello 1
OK
192.168.xxx.21:6379[2]> set word 1
OK
192.168.xxx.21:6379[2]> set hellp 1
OK
192.168.xxx.21:6379[2]> set ahellog 1
OK
192.168.xxx.21:6379[2]> set hellog 1
OK

 查詢:

192.168.xxx.21:6379[2]> keys *
1) "hello"
2) "hellog"
3) "hellp"
4) "word"
5) "ahellog"
192.168.xxx.21:6379[2]> keys *hell*
1) "hello"
2) "hellog"
3) "hellp"
4) "ahellog"
192.168.xxx.21:6379[2]> keys hell*
1) "hello"
2) "hellog"
3) "hellp"
//知道前面的一些字母,忘記了最后一個字母
192.168.xxx.21:6379[2]> keys hell?
1) "hello"
2) "hellp"
//知道前面的一些字母,忘記了最后兩個個字母
192.168.xxx.21:6379[2]> keys hell??
1) "hellog"
//知道前面四個字母,最后一個字母有可能是p t y 其中的一個
192.168.xxx.21:6379[2]> keys hell[pty]
1) "hellp"
192.168.xxx.21:6379[2]>

SCAN

說明

Redis 2.8版本引入,目標(biāo)是解決keys命令的一些問題,特點:

  • 復(fù)雜度O(n),通過游標(biāo)分步進行的,不會阻塞線程;
  • 提供 limit 參數(shù),可以設(shè)置每次返回結(jié)果的數(shù)據(jù)量,limit只是對增量式迭代命令的hint,返回的結(jié)果可多可少;
  • 支持模式匹配功能;
  • 服務(wù)器不需要為游標(biāo)保存狀態(tài),游標(biāo)的唯一狀態(tài)就是 scan 返回給客戶端的游標(biāo)整數(shù);
  • 返回的結(jié)果可能會有重復(fù),需要客戶端去重復(fù);
  • 無法提供完整的快照遍歷,即遍歷過程中若有數(shù)據(jù)修改,改動后的數(shù)據(jù)可能遍歷不到;每次返回的數(shù)據(jù)條數(shù)不一定,極度依賴內(nèi)部實現(xiàn);
  • 單次返回的結(jié)果是空的并不意味著遍歷結(jié)束,而要看返回的游標(biāo)值是否為零

SCAN不是從第一維數(shù)組的第 0 位一直遍歷到末尾,而是采用高位進位加法來遍歷。之所以使用這樣特殊的方式進行遍歷,是考慮到字典的擴容和縮容時避免槽位的遍歷重復(fù)和遺漏。

高位進位法從左邊加,進位往右邊移動,同普通加法正好相反。但是最終它們都會遍歷所有的槽位并且沒有重復(fù)。

指令格式

SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

  • cursor
    • 游標(biāo),當(dāng)次遍歷的起始位置
  • pattern
    • 與Keys命令中的patterns相同,支持通配符匹配
  • count
    • 返回數(shù)據(jù)條數(shù)。默認(rèn)為10
    • 如果MATCH選項沒有指定,則返回條數(shù)可能大于等于這個數(shù)。因為Redis對全局哈希表的每個哈希槽進行遍歷,一旦發(fā)現(xiàn)拿到的元素個數(shù)大于了count,就停止遍歷。若一個桶里有多個元素,這時返回的元素就有可能多于count一點了。
  • type:
    • Redis 6.0 支持的參數(shù),指定返回Key的類型,類型可選值與 TYPE命令相同:string, list, set, zset, hash and stream。

第一次遍歷時,cursor 值為 0,然后將返回結(jié)果中第一個整數(shù)值作為下一次遍歷的 cursor。一直遍歷到返回的 cursor 值為 0 時結(jié)束。

示例

192.168.xxx.21:6379[2]> keys *
1) "hello"
2) "hellog"
3) "hellp"
4) "word"
5) "ahellog"
192.168.xxx.21:6379[2]> scan 0 match *ll* count 2
1) "5"
2) 1) "hellp"
   2) "hello"
192.168.xxx.21:6379[2]> scan 5 match *ll* count 2
1) "0"
2) 1) "hellog"
   2) "ahellog"
192.168.xxx.21:6379[2]>

到此這篇關(guān)于Redis模糊查詢的幾種實現(xiàn)方法的文章就介紹到這了,更多相關(guān)Redis模糊查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Windows系統(tǒng)設(shè)置Redis服務(wù)使其開機自啟動

    Windows系統(tǒng)設(shè)置Redis服務(wù)使其開機自啟動

    Redis是一種鍵值對數(shù)據(jù)庫,也稱為內(nèi)存數(shù)據(jù)庫,因為它可以將數(shù)據(jù)存儲在內(nèi)存中,而不是在磁盤上,下面這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)設(shè)置Redis服務(wù)使其開機自啟動的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Fastadmin中使用Redis的實現(xiàn)方法

    Fastadmin中使用Redis的實現(xiàn)方法

    在Fastadmin框架中使用Redis很簡單,是基于thinkphp框架的操作方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-05-05
  • Redis @type坑的解決

    Redis @type坑的解決

    新建一個對象存入redis中,對象中會出現(xiàn)一個字段@type,本文主要介紹了Redis @type坑的解決,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • 基于Redis實現(xiàn)短信驗證碼登錄項目示例(附源碼)

    基于Redis實現(xiàn)短信驗證碼登錄項目示例(附源碼)

    手機登錄驗證在很多網(wǎng)頁上都得到使用,本文主要介紹了基于Redis實現(xiàn)短信驗證碼登錄項目示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Redis中群集三種模式的實現(xiàn)

    Redis中群集三種模式的實現(xiàn)

    Redis群集有三種模式,分別是主從同步/復(fù)制、哨兵模式、Cluster,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-11-11
  • 如何自定義redis工具jar包供其他SpringBoot項目直接使用

    如何自定義redis工具jar包供其他SpringBoot項目直接使用

    這篇文章主要介紹了如何自定義redis工具jar包供其他SpringBoot項目直接使用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • redis cluster集群模式下實現(xiàn)批量可重入鎖

    redis cluster集群模式下實現(xiàn)批量可重入鎖

    本文主要介紹了使用redis cluster集群版所遇到的問題解決方案及redis可重入鎖是否會有死鎖的問題等,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Redis Subscribe timeout 報錯的問題解決

    Redis Subscribe timeout 報錯的問題解決

    最近系統(tǒng)偶爾報出org.redisson.client.RedisTimeoutException: Subscribe timeout: (7500ms)的錯誤,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08
  • Window下對Redis進行開啟與關(guān)閉的操作方法

    Window下對Redis進行開啟與關(guān)閉的操作方法

    這篇文章主要介紹了Window下對Redis進行開啟與關(guān)閉的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • Redis 有序集合的使用場景

    Redis 有序集合的使用場景

    在Redis的學(xué)習(xí)中,有序集合是一種非常實用的數(shù)據(jù)結(jié)構(gòu),本文就來介紹一下Redis 有序集合的使用場景,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03

最新評論

繁峙县| 龙山县| 新建县| 凉城县| 美姑县| 锡林郭勒盟| 汕尾市| 竹溪县| 社旗县| 泾阳县| 西乌珠穆沁旗| 卢湾区| 沙洋县| 仁布县| 闻喜县| 泗水县| 中卫市| 资讯 | 山丹县| 通河县| 杨浦区| 当涂县| 福建省| 嘉兴市| 文成县| 克什克腾旗| 闽侯县| 扶沟县| 南通市| 原阳县| 资中县| 太和县| 丰宁| 扶沟县| 铜山县| 嘉义县| 诸城市| 兴隆县| 宁南县| 缙云县| 岳普湖县|