predis批量刪除key

2021-10-01 02:43:16 字數 1534 閱讀 3763

當有大量資料需要清除的時候,可以使用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...