如何在 Redis 中獲取所有密鑰
-
大多數(但不是全部)對象使用密鑰
-
使用命名空間
-
檢索所有現有密鑰
與其他非關係型數據庫引擎一樣,有時很難理解 Redis 如何處理數據結構和關聯。當將 Redis 與具有隔離表的更傳統的關係數據庫進行比較時尤其如此,每個表都包含多行和多列來存放數據。
由於 Redis 是非關係型的,因此係統中的所有內容都以key/value
最簡單的級別配置了基本對。特別是在開發過程中,跟蹤數據庫中已經存在的所有內容可能會很棘手,因此在這個簡短的教程中,我們將介紹keys
使用一些簡單命令從 Redis 數據庫中檢索所有內容的方法。
對於使用 Redis 進行的絕大多數數據存儲,數據將存儲在一個簡單的對中。這最好通過redis-cli
(命令行界面)使用GET
和SET
命令來顯示。
例如,我們可能想要存儲一些關於的信息books
,例如我們的一些收藏夾的title
和author
。
> SET title "The Hobbit"OK> SET author "J.R.R. Tolkien"OK
和是我們設置的和之後指定的實際字符串值。所以我們可以用 來查看它們,如下所示:
> GET title"The Hobbit"> GET author"J.R.R. Tolkien"
使用命名空間
這一切都很好,但是我們如何添加另一本書?我們不能重複使用相同的和鍵,否則我們將覆蓋現有數據。相反,我們可以通過使用:
分隔符並給每個或條目一個唯一的數字來使用命名空間語法key
:
> SET title:1 "The Hobbit"OK> SET author:1 "J.R.R. Tolkien"OK> SET title:2 "The Silmarillion"OK> SET author:2 "The Silmarillion"OK
現在使用還需要添加唯一的數字:
> GET title:1> GET title:2"The Silmarillion"
檢索所有現有密鑰
事實證明,我們在上面發出的每個命令都在我們的 Redis 數據庫中創建了一個新的、唯一的。要獲取所有當前存在的列表,只需使用以下KEYS
命令:
> KEYS *1) "title:1"2) "title:2"3) "title"4) "author:2"5) "author"6) "author:1"
通過使用星號 ( *
)(充當通配符搜索),我們要求 Redis 檢索系統中的所有密鑰。因此,我們不僅看到了我們的兩個原始版本和密鑰,還看到了隨後的四個枚舉版本。
以下語法可用於搜索鍵中的特定單詞或短語,或者也可用於精確匹配。在這裡,我們想要所有包含文本的鍵"title"
:
> KEYS *title*
注意:正如官方文檔中提到的,建議避免在非常大的數據庫上使用該命令,尤其是避免在生產環境中使用它。由於可能會返回系統中的每個密鑰,這可能會對性能產生巨大的負面影響。