REDIS 批量刪除命令說明

2021-08-30 17:34:08 字數 2709 閱讀 5849

1.訪問redis根目錄    cd  /usr/local/redis-2.8.19

3.檢視所有key值:keys *

4.刪除指定索引的值:del key

5.清空整個 redis 伺服器的資料:flushall

6.清空當前庫中的所有 key:flushdb

redis-cli -h (ip位址) -p 6379 (埠號:6379) keys key_* | xargs redis-cli (-h (ip位址) -p 6379 (埠號:6379)) del 

=>[執行後返回的結果影響數量]:(integer) 100[數量100個]

del key [key ...]

刪除給定的乙個或多個key

不存在的key會被忽略。

時間複雜度:

o(n),n為被刪除的key的數量。

刪除單個字串型別的key,時間複雜度為o(1)。

刪除單個列表、集合、有序集合或雜湊表型別的key,時間複雜度為o(m),m為以上資料結構內的元素數量。

返回值:

被刪除key的數量。

#  刪除單個 key

redis> set name huangz

okredis> del name

(integer) 1

# 刪除乙個不存在的 key

redis> exists phone

(integer) 0

redis> del phone # 失敗,沒有 key 被刪除

(integer) 0

# 同時刪除多個 key

redis> set name "redis"

okredis> set type "key-value store"

okredis> set website "redis.com"

okredis> del name type website

(integer) 3

第一種方式弊端這樣乙個壞處每次都要建立乙個連線,量小的話還可以接受,量大的話,效率不行。

通過內建的 lua 直譯器,可以使用 eval 命令對 lua 指令碼:

redis-cli -h(ip位址) -p 6379(埠號:6379) --eval "return redis.call('del', unpack(redis.call('keys', argv[1])))" 0 'volume:*'
【注】:但這種處理方式,量大的情況下,lua函式unpack會出現問題,會報錯誤 

'''

(error) err error running script (call to f_e177a091510d969af3b388ee986dbe6658df6b57): @user_script:1: user_script:1: too many results to unpack

'''

【第二種方式優化後】:

【注釋】:首先定義乙個陣列 keys,裡面儲存了模式匹配的所有的以 『volume:』的key,然後for迴圈,每次處理5000個key,也就是說每次del 5000個key

redis-cli -h(ip位址) -p 6379(埠號:6379) --eval "local keys = redis.call('keys', argv[1]) 

for i=1,#keys,5000

do redis.call('del', unpack(keys, i, math.min(i+4999, #keys)))

end

return #keys" 0 'volume:*'

【第二種方式弊端】: 

redis是單執行緒的,如果量很大的話,keys是遍歷key的,會導致阻塞,這樣其他的客戶端就沒法連線了!

自從redis2.8以後就開始支援scan命令,模式匹配可以採取下面的形式來批刪除大量的key

redis-cli -a youpassowrd -n 0 -p 6379 --scan --pattern "volume:*" | xargs -l 5000 redis-cli -a youpassword -n 0 -p 6379 del
【結果】:

'''

(integer) 5000

(integer) 5000

(integer) 5000

(integer) 5000

(integer) 5000

(integer) 5000

(integer) 5000

(integer) 207

'''

redis 命令遠端批量刪除keys

1.首先在電腦上裝上 redis 客戶端 2.安裝成功後,進入 redis cli 客戶端目錄 連線 redis 1.redis 4.0.7 cd bin 執行 redis service 開啟 redis 資料庫 2.cd bin redis cli 開啟控制台 執行命令 redis cli h ...

Redis批量刪除key的命令

redis中沒有直接根據正規表示式刪除key的命令,只有 del key1 key2.命令 但是redis中有通過正規表示式獲取key的命令 keys 正規表示式 可以借助於xargs命令實現批量刪除key,把查出來的key值當做引數傳給del redis cli keys mailspec xar...

redis批量刪除

redis中沒有批量刪除資料的指令,但可以借助linux的指令xargs來批量刪除 如果redis cli沒有設定成系統變數,需要指定redis cli的完整路徑,如 如果要指定 redis 資料庫訪問密碼,使用下面的命令 如果要訪問 redis 中特定的資料庫,使用下面的命令 刪除所有key,可以...