一、前言
在工作中經常遇到需要批量刪除某種規則的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指令的輸入
最終執行的結果可以理解成
(學習影片分享:redis影片教學)
#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
相關推薦:redis資料庫教學
#以上是redis批量刪除某種規則的key的詳細內容。更多資訊請關注PHP中文網其他相關文章!