1. 程式人生 > >redis批量刪除key 遠端批量刪除key

redis批量刪除key 遠端批量刪除key

一、遇到的問題

  在開發的過程中,經常會遇到要批量刪除某種規則的key,如快取的課程資料“course-課程uid”,其中課程uid是變數,我們需要刪除"course-*"這一類的資料,但是這裡就坑了,redis有提供批量查詢一類key的命令keys,但是沒有提供批量刪除某種型別key的命令。

二、解決方案

  先看看我們怎麼解決。

1、先進入redis的客戶端

cd redis所在目錄/src
./redis-cli

2、初始化資料,模擬資料

127.0.0.1:6379> set course-1 1
OK
127.0.0.1:6379> set course-2 2
OK
127.0
.0.1:6379> set course-3 3 OK

3、通過keys命令可以看到,現在有上面的三個key

127.0.0.1:6379> keys  course-*
1) "course-3"
2) "course-2"
3) "course-1"

4、退出redis的客戶端

127.0.0.1:6379> exit

5.1、本地批量刪除key

./redis-cli keys "course-*" | xargs ./redis-cli del

此處剛剛 course-*  相關的3個key已經被刪除了

原理解析:

  先通過redis客戶端執行了keys命令,模糊搜尋出所有的key,通過xargs命令,將前面查詢出來的key作為後面redis的del命令的輸入

最終執行的結果可以理解成

 1、模糊查詢

keys "course-*" 

  查詢出上面的course-1 course-2 course-3 這三個key

2、執行刪除key

  del的三個key來自前面的keys查詢

del course-1 course-2  course-3    

5.2、遠端批量刪除key

  經常我們開發的時候,redis都是公用的,可能redis不在本地我們可以通過redis客戶端遠端進行刪除

./redis-cli -h redis所在伺服器ip -p 埠 keys "course-*" |xargs ./redis-cli -h redis所在伺服器ip -p 埠 del

三、補充知識

1、遠端某臺機子的redis

  以下例項演示瞭如何連線到主機為 127.0.0.1,埠為 6379 ,密碼為 mypass 的 redis 服務上。

redis-cli -h 127.0.0.1 -p 6379 -a "mypass"

2、xargs命令

xargs命令是給其他命令傳遞引數的一個過濾器,也是組合多個命令的一個工具。 詳情課件 http://man.linuxde.net/xargs

致謝:感謝您的耐心閱讀!