小編給大家分享一下php中redis批量刪除key的方法是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
目前創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)站空間、網(wǎng)站托管、服務器租用、企業(yè)網(wǎng)站設計、伍家崗網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
php redis刪除key的方法:首先使用scan命令增量迭代的方式遍歷出以【XX】為前綴的key;然后通過unlink函數(shù)刪除指定的key即可。
php redis批量刪除key
摘要
使用scan命令增量迭代的方式遍歷出以XX為前綴的key,然后刪除
簡介
在實際開發(fā)中,一不小心redis就會混入一些無用的數(shù)據(jù),比如某位大哥忘記給加上緩存時間,或者因為業(yè)務修改需要將數(shù)據(jù)結(jié)構(gòu)list改為zset,之前的緩存就沒用了,但是過期時間有點長,這時候就需要批量刪除key。如果使用keys命令遍歷出符合條件的keys,會阻塞redis的其他操作,在生產(chǎn)環(huán)境是肯定不行的,于是祭出scan命令大殺器。
代碼
/** 在redis集群中,scan命令需要指定節(jié)點。還需要注意,要連接主節(jié)點。 **/ $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); //默認SCAN_NORETRY情況下有可能會返回空數(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時很好用,但是它需要redis版本>=4.0 $result = $redis->del($arr_keys); echo $result . PHP_EOL; } } echo "OK!" . PHP_EOL; }
以上是php中redis批量刪除key的方法是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站欄目:php中redis批量刪除key的方法是什么
文章地址:http://aaarwkj.com/article36/pjcdpg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、品牌網(wǎng)站建設、網(wǎng)站排名、做網(wǎng)站、云服務器、網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)