PHP Redis에서 키를 삭제하는 방법: 먼저 scan 명령을 사용하여 [XX] 접두사가 붙은 키를 점진적으로 순회한 다음 연결 해제 기능을 통해 지정된 키를 삭제합니다.
권장: "redis tutorial"
php redis 키 일괄 삭제
요약
scan 명령을 사용하여 접두사가 XX인 키를 점진적으로 반복합니다. 그리고 나서 삭제
Introduction
실제 개발에서 redis는 쓸모없는 데이터를 실수로 혼합합니다. 예를 들어 형이 캐시 시간 추가를 잊어버렸거나 비즈니스 수정으로 인해 데이터 구조 목록을 zset으로 변경해야 하는 경우가 있습니다. , 이전 캐시는 쓸모가 없지만 만료 시간이 조금 길어서 키를 일괄 삭제해야 합니다. 조건에 맞는 키를 순회하기 위해key 명령을 사용하면 redis의 다른 작업이 차단되는데 이는 프로덕션 환경에서는 절대 불가능한 일이므로 scan 명령이 킬러로 사용됩니다.
code
/** 在redis集群中,scan命令需要指定节点。还需要注意,要连接主节点。 **/ $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情况下有可能会返回空数组,设置成SCAN_RETRY,如果是空数组的话,将不返回继续扫描下去 $redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY); $it = NULL; while ($arr_keys = $redis->scan($it, CacheKeyConfig::CachePre.'*')) { if (is_array($arr_keys)) { //推荐使用unlink函数,非阻塞删除,删除大key时很好用,但是它需要redis版本>=4.0 $result = $redis->del($arr_keys); echo $result . PHP_EOL; } } echo "OK!" . PHP_EOL; }
위 내용은 PHP Redis에서 일괄적으로 키를 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!