>  기사  >  데이터 베이스  >  PHP Redis에서 일괄적으로 키를 삭제하는 방법

PHP Redis에서 일괄적으로 키를 삭제하는 방법

藏色散人
藏色散人원래의
2020-08-15 10:33:285540검색

PHP Redis에서 키를 삭제하는 방법: 먼저 scan 명령을 사용하여 [XX] 접두사가 붙은 키를 점진적으로 순회한 다음 연결 해제 기능을 통해 지정된 키를 삭제합니다.

PHP Redis에서 일괄적으로 키를 삭제하는 방법

권장: "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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.