2011-03-09 130 views

回答

495

試着看看KEYS命令。 KEYS *將列出存儲在redis中的所有密鑰。

編輯:請注意在KEYS文檔頁面的頂部的警告:

時間複雜度: O(N),N是數據庫中的鍵的數量,在假設數據庫中的鍵名和給定的模式的長度有限。

UPDATE(V2.8或更大):​​SCAN是一個更好的選擇KEYS,在某種意義上說,它不會擋住服務器也不消耗顯著資源。更喜歡使用它。

+28

CLI使用示例:' redis-cli keys「*」' – 2016-11-28 10:11:26

+1

請檢查Itamar Haber對2.8及更高版本的另一個答案,以使用SCAN來代替https://stackoverflow.com/questions/5252099/redis-command-to-get-all-available-keys/ 23877883#23877883 – enator 2017-12-25 07:48:41

97

更新了Redis的2.8及以上

如前回答這個問題的評論中指出,KEYS是一種具有潛在危險的命令,因爲您的Redis服務器將不可用做其他操作,同時它提供它。 KEYS的另一個風險是它可以消耗(取決於您的密鑰空間的大小)很多RAM來準備響應緩衝區,因此可能會耗盡您的服務器的內存。

Redis 2.8版引入了SCAN系列更有禮貌的命令,可用於相同的目的。

CLI還提供了一個很好的方式,與它的工作:

$ redis-cli --scan --pattern '*' 
13

看看以下Redis Cheat Sheet。 要獲得Redis的鍵的子集與Redis的-CLI我使用命令

KEYS "prefix:*" 
17

它可以發生,使用Redis的CLI,您連接到遠程Redis的服務器,然後在命令:

KEYS * 

沒有顯示任何東西,或更好的,它表明:
(empty list or set)

如果你是絕對確保您使用Redis的服務器是你的數據之一,那麼也許你的Redis-CL我沒有連接到Redis正確的數據庫實例。

正如在Redis文檔中提到的,新連接默認連接到db 0

在我的情況下,KEYS命令沒有檢索結果,因爲我的數據庫是1.爲了選擇你想要的數據庫,使用SELECT
數據庫由一個整數標識。

SELECT 1 
KEYS * 

我發佈此信息,因爲沒有以前的答案解決我的問題。

6

是的,你可以通過使用得到所有鍵此

var redis = require('redis'); 
redisClient = redis.createClient(redis.port, redis.host);  
    redisClient.keys('*example*', function (err, keys) { 
}) 
+2

不完全是OP所要求的(redis-cli),但謝謝爲了指出這一點。 – Herick 2016-08-11 17:51:36

11

- >獲取從Redis的-CLI所有鍵

-redis 127.0.0.1:6379> keys * 

- >獲取的模式列表

-redis 127.0.0.1:6379> keys d?? 

這將產生以'd'開始並具有三個字符的鍵。

-redis 127.0.0.1:6379> keys *t* 

這港島線獲得關鍵

用火柴 'T' 鍵字符 - >通過

-redis-cli keys * |wc -l 

計數的命令行鍵 - >或者你可以使用dbsize

-redis-cli dbsize 
+0

剛剛複製答案並嘗試。它給了「未知命令」鍵「」。 「鑰匙」不是命令,「鑰匙」是。請將'key * t *'更正爲'keys * t *'。 – 2016-11-02 14:15:17

+0

感謝兄弟的信息。這是我的錯誤。當前我在mobile.i將改變這個命令eairlier。 – denny 2016-11-02 16:14:51

2

SCAN不需要客戶端將所有密鑰加載到像KEYS那樣的內存中。 SCAN爲您提供了一個可以使用的迭代器。我的redis中有一個1B記錄,我無法獲得足夠的內存來一次返回所有的密鑰。

這裏是一個Python代碼片段獲得從商店所有匹配模式鍵和刪除:

import redis 
r = redis.StrictRedis(host='localhost', port=6379, db=0) 
for key in r.scan_iter("key_pattern*"): 
    print key 
1
redis-cli -h <host> -p <port> keys * 

其中*是模式列出所有鍵

+0

我不得不引用這位明星,如下:''redis-cli -h -p keys'*'' – aggregate1166877 2018-03-02 02:41:05

相關問題