1. 程式人生 > >redis 模糊刪除keys

redis 模糊刪除keys

由於在我們的專案中使用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