php redis 删除key 通配符,php中redis批量删除key的方法是什么
php中redis批量刪除key的方法是什么
發(fā)布時(shí)間:2020-08-28 14:42:05
來(lái)源:億速云
閱讀:159
作者:小新
小編給大家分享一下php中redis批量刪除key的方法是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!php redis刪除key的方法:首先使用scan命令增量迭代的方式遍歷出以【XX】為前綴的key;然后通過unlink函數(shù)刪除指定的key即可。
php redis批量刪除key
摘要
使用scan命令增量迭代的方式遍歷出以XX為前綴的key,然后刪除
簡(jiǎn)介
在實(shí)際開發(fā)中,一不小心redis就會(huì)混入一些無(wú)用的數(shù)據(jù),比如某位大哥忘記給加上緩存時(shí)間,或者因?yàn)闃I(yè)務(wù)修改需要將數(shù)據(jù)結(jié)構(gòu)list改為zset,之前的緩存就沒用了,但是過期時(shí)間有點(diǎn)長(zhǎng),這時(shí)候就需要批量刪除key。如果使用keys命令遍歷出符合條件的keys,會(huì)阻塞redis的其他操作,在生產(chǎn)環(huán)境是肯定不行的,于是祭出scan命令大殺器。
代碼/**
在redis集群中,scan命令需要指定節(jié)點(diǎn)。還需要注意,要連接主節(jié)點(diǎn)。
**/
$redis = new \Redis();
$timeout = 2.5;
$ip = '127.0.0.1';
$redisConfArr = [
[$ip, 8001],
[$ip, 8002],
[$ip, 8003]
];
foreach ($redisConfArr as $redisConf) {
$redis->pconnect($redisConf[0], $redisConf[1], $timeout);
//默認(rèn)SCAN_NORETRY情況下有可能會(huì)返回空數(shù)組,設(shè)置成SCAN_RETRY,如果是空數(shù)組的話,將不返回繼續(xù)掃描下去
$redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY);
$it = NULL;
while ($arr_keys = $redis->scan($it, CacheKeyConfig::CachePre.'*')) {
if (is_array($arr_keys)) {
//推薦使用unlink函數(shù),非阻塞刪除,刪除大key時(shí)很好用,但是它需要redis版本>=4.0
$result = $redis->del($arr_keys);
echo $result . PHP_EOL;
}
}
echo "OK!" . PHP_EOL;
}
以上是php中redis批量刪除key的方法是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
總結(jié)
以上是生活随笔為你收集整理的php redis 删除key 通配符,php中redis批量删除key的方法是什么的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BUUCTF-Reverse:rever
- 下一篇: BUUCTF-Reverse:rever