當有大量資料需要清除的時候,可以使用del批量刪除 del k1 k2 …
但是當要刪除的key是需要通過匹配來獲得的時候,或許最先想到的辦法就是先通過keys拿到這些key,然後拼接到 del 後面,這樣是能解決問題,但是首先keys會造成短暫的阻塞,其次keys的返回,其次 del 後面的n個key的長指令也需要傳輸時間,實際上我們並不關心都是哪些key被刪除了,於是我們可以lua指令碼來實現。
1、當你可以預知這些key數量不是很多的時候
$keypre
= read3repository::cachepre . read3repository::cache_depart_rank .
$activity_id
.'_*'
;$script
="return redis.call('del', unpack(redis.call('keys', ar**[1])))"
;$res
= redis::eval(
$script, 0, $keypre
);// 0表示沒有傳key值
2、當key的數量可能很大的時候
$keypre
= read3repository::cachepre . read3repository::cache_depart_rank .
$activity_id
.'_*'
;$script
="local keys = redis.call('keys', ar**[1]) for i=1,#keys,5000 do redis.call('del', unpack(keys, i, math.min(i+4999, #keys))) end return #keys"
;$res
= redis::eval(
$script, 0, $keypre
);// 0表示沒有傳key值
3、命令列
或者或者|
4、推薦使用配合scan
public
static
function
deleteread3departrankbyid
($activity_id
)call_user_func_array
([redis:
:class
,'del'],
$set);
return
true;}
public
static
function
scangetkeys
($pattern
,$count=50
)$ret
=array_merge
($ret
,$result[1
]);$iterator
=$result[0
];if(
$result[0
]==0)
}return
$ret
;}
redis批量刪除Key
批量刪除key redis 中有刪除單個 key 的指令 del,但好像沒有批量刪除 key 的指令,不過我們可以借助 linux 的 xargs 指令來完成這個動作 redis cli keys xargs redis cli del 如果redis cli沒有設定成系統變數,需要指定redis ...
centos redis批量刪除key
刪除redis中儲存的某種規則的key 比如我刪除的是積分相關integral 積分id 我們需要刪除 integral 這一類的資料,本人只會幾個簡單查詢插入命令。批量查詢倒是可以查詢出來 127.0.0.1 6379 keys integralid 查詢n個帖子找到解決辦法 此時,我們應該退出r...
redis批量刪除key
前言 redis本身命令不提供批量刪除,但通過linux連線redis,結合redis和linux相關命令實現批量刪除。例 刪除 以employeeinfo開頭的所有資料 1.1 redis為預設埠號6379,無連線密碼,刪除命令如下 redis cli keys employeeinfo xarg...