redis 模糊刪除keys
阿新 • • 發佈:2019-01-09
由於在我們的專案中使用Spring Cached和Redis結合的方式對一部分資料做資料庫快取,當快取和資料庫資料不一致時(由於手動改資料庫引起),就得清空資料庫的快取,這就涉及到Redis迷糊匹配刪除資料的情況發生。
Redis keys命令支援模式匹配,但是del命令不支援模式匹配,有時候需要根據一定的模式來模糊刪除key,這時只能結合shell命令來完成了。 具體命令是:
redis-cli KEYS "pattern" | xargs redis-cli DEL
比如 redis-cli KEYS "celery*" | xargs redis-cli DEL
1
2
其中pattern是keys命令支援的模式,這樣就可以模糊刪除key了。
注意注意這是shell命令,不是redis的命令!!
我的例子:
進到redis安裝目錄的src目錄
/usr/local/redis-2.8.17/src
然後執行命令
./redis-cli -a jl2012 KEYS “drugStoreService_cache*” | xargs redis-cli -a jl2012 DEL
其中drugStoreService_cache就是模糊匹配的key的字首;-a jl2012是因為我們的redis資料庫使用了密碼,需鑑權,沒設定密碼的redis是不需要這個引數的。備忘備忘!
附上一段shell指令碼供大家參考
# !/bin/sh #redis-cli path REDISPATH=/usr/local/redis/bin #Detects whether a key value similar to a hash* exists RESULT=`/$REDISPATH/redis-cli keys "hash*" | xargs` #echo $RESULT if [ -z "$RESULT" ]; then echo "no cache" else #del hash* from redis /$REDISPATH/redis-cli keys "hash*" | xargs /$REDISPATH/redis-cli del echo "del ok" fi