搜尋
首頁資料庫RedisRedis遍歷鍵與資料庫管理詳解

這篇文章為大家帶來了關於Redis的相關知識,其中主要介紹了關於遍歷鍵和資料庫管理的相關內容,下面一起來看一下,希望對大家有幫助。

Redis遍歷鍵與資料庫管理詳解

推薦學習:Redis影片教學

#1 遍歷鍵

1.1 全量遍歷鍵

有時候我們需要全量遍歷所有的鍵,那麼就需要用到keys pattern這個指令,而這個指令支援pattern符合

127.0.0.1:6379> mset name luke neme josh
OK

若是想要遍歷所有的鍵則可以使用指令keys *

127.0.0.1:6379> keys *
1) "name"
2) "neme"

pattern使用的是glob風格的通配符,其中:

  • ##* 代表任意字元

  • #?代表一個字符

  • [] 代表匹配部分字符,例如[a,b]表示匹配a,b兩個字符,[1-10]表示匹配1到10的任意數字

  • \x 表示轉義,當需要符合*這個字元的時候,就需要轉義

我們可以做如下操作:

127.0.0.1:6379> keys n[a,e]me
1) "name"
2) "neme"

也可以這樣操作

127.0.0.1:6379> keys n?me
1) "name"
2) "neme"

但是當redis資料庫中有大量的鍵的時候,keys會阻塞redis。

若是我們有需求需要遍歷鍵那麼該怎麼辦呢?

一般我們生產環境是多節點的,那麼我們可以找一個不對外提供服務的redis從節點進行遍歷數據,但是若是數據量大還是會阻塞redis,但是對於從節點來說,只是影響到了主從複製。

若是確定redis上的鍵並不多的時候,可以直接執行。

1.2 漸進式遍歷

#漸進式遍歷就是每次遍歷部分key,然後返回,下一次接著遍歷之後的資料。這樣即可以遍歷所有數據,也不會阻塞redis服務。

scan cursor [MATCH pattern] [COUNT count]

其中的參數解釋如下:

  • cursor是必須參數,他是一個遊標,表示這次遍歷到哪裡了,下次就從這個遊標開始,若是返回0則表示遍歷完成了。

  • MATCH pattern 是可選參數,和keys的pattern是一樣的

  • COUNT count 表示遍歷幾個key,預設是10個,根據實際情況可進行增加

  • 127.0.0.1:6379> mset a 1 b 1 c 1 d 1 e 1 f 1 g 1 h 1 i 1 g 1 k 1 l 1 m 1 n 1 o 1 p 1 q 1 r 1 s 1 t 1 u 1 v 1 w 1 x 1 y 1 z 1
    OK
我們使用scan進行遍歷,第一次執行返回如下:

127.0.0.1:6379> scan 0
1) "1"
2)  1) "l"
    2) "f"
    3) "k"
    4) "y"
    5) "c"
    6) "e"
    7) "w"
    8) "d"
    9) "b"
   10) "o"
   11) "q"

第二次使用第一次返回的1進行遍歷,又可以遍歷到10個key

127.0.0.1:6379> scan 1
1) "23"
2)  1) "v"
    2) "u"
    3) "z"
    4) "g"
    5) "n"
    6) "s"
    7) "i"
    8) "a"
    9) "r"
   10) "t"

第三次使用第二次返回的23進行遍歷,當返回為0的時候,則表示遍歷完成

127.0.0.1:6379> scan 23
1) "0"
2) 1) "x"
   2) "h"
   3) "m"
   4) "p"

同時還有針對於哈希類型的hscan,針對集合類型的sscan,和針對有序集合的zscan,使用方法與scan都是相同的

2 資料庫管理

redis還有幾個面向資料庫操作的指令:dbsize,select,flushdb/flushall

##2.1 切換資料庫,selectselect dbIndexdbIndex是對應的資料庫序號,redis預設配置中是有16個資料庫,select幾就切換到幾號資料庫。

例如在預設的0號資料庫設定一個key

127.0.0.1:6379> set name luke
OK

然後我們切換到1號資料庫來取得這個key,並不能取得到,表示一個redis服務內各個資料庫之間是不互通的。

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
(nil)

那麼是不是可以當成多個redis來使用呢,當然不可以。雖然庫變​​多了,但是由於redis是單線程的,其實還是一個CPU,若是一個數據庫有一條命令執行很慢,其他庫也是會受到影響的,所以在這種情況下,若是被其他庫阻塞,對於使用某個函式庫的開發人員,很難分析出是什麼問題。

2.2 flushall/flushdbflushall和flushdb的差別在於,flushall會清除所有函式庫的所有數據,而flushdb只會清除當前資料庫的。

這個很容易理解,我們就不舉例子了,但是需要注意的是,這兩個命令會清除所有數據,一旦誤操作後果不堪想像。而且當key特別多的時候,也會阻塞redis,所以使用這兩個指令的時候一定要慎之又慎。

推薦學習:

Redis影片教學

以上是Redis遍歷鍵與資料庫管理詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:掘金。如有侵權,請聯絡admin@php.cn刪除
es和redis区别es和redis区别Jul 06, 2019 pm 01:45 PM

Redis是现在最热门的key-value数据库,Redis的最大特点是key-value存储所带来的简单和高性能;相较于MongoDB和Redis,晚一年发布的ES可能知名度要低一些,ES的特点是搜索,ES是围绕搜索设计的。

一起来聊聊Redis有什么优势和特点一起来聊聊Redis有什么优势和特点May 16, 2022 pm 06:04 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于redis的一些优势和特点,Redis 是一个开源的使用ANSI C语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式存储数据库,下面一起来看一下,希望对大家有帮助。

实例详解Redis Cluster集群收缩主从节点实例详解Redis Cluster集群收缩主从节点Apr 21, 2022 pm 06:23 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis Cluster集群收缩主从节点的相关问题,包括了Cluster集群收缩概念、将6390主节点从集群中收缩、验证数据迁移过程是否导致数据异常等,希望对大家有帮助。

Redis实现排行榜及相同积分按时间排序功能的实现Redis实现排行榜及相同积分按时间排序功能的实现Aug 22, 2022 pm 05:51 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

详细解析Redis中命令的原子性详细解析Redis中命令的原子性Jun 01, 2022 am 11:58 AM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于原子操作中命令原子性的相关问题,包括了处理并发的方案、编程模型、多IO线程以及单命令的相关内容,下面一起看一下,希望对大家有帮助。

一文搞懂redis的bitmap一文搞懂redis的bitmapApr 27, 2022 pm 07:48 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了bitmap问题,Redis 为我们提供了位图这一数据结构,位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已,希望对大家有帮助。

实例详解Redis实现排行榜及相同积分按时间排序功能的实现实例详解Redis实现排行榜及相同积分按时间排序功能的实现Aug 26, 2022 pm 02:09 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。

一起聊聊Redis实现秒杀的问题一起聊聊Redis实现秒杀的问题May 27, 2022 am 11:40 AM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于实现秒杀的相关内容,包括了秒杀逻辑、存在的链接超时、超卖和库存遗留的问题,下面一起来看一下,希望对大家有帮助。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境