>  기사  >  데이터 베이스  >  Redis에서 키 값 일괄 삭제 문제를 해결하는 방법

Redis에서 키 값 일괄 삭제 문제를 해결하는 방법

王林
王林앞으로
2023-05-31 08:59:001650검색

발생한 문제:

개발 과정에서 login_logID(ID는 변수)와 같은 특정 규칙에 따라 일괄 삭제해야 하는 키가 발생합니다. 이제 "login_log*"와 같은 데이터를 삭제해야 합니다. 하지만 redis 자체에는 키 클래스의 키 값을 일괄 쿼리하는 명령만 있고 특정 클래스를 일괄 삭제하는 명령은 없습니다.

해결책:

먼저 쿼리한 다음 삭제하고 xargs를 사용하여 매개변수를 전달하고(xargs는 파이프 또는 표준 입력(stdin) 데이터를 명령줄 매개변수로 변환할 수 있음) 먼저 쿼리 문을 실행한 다음 쿼리된 키 값 del을 사용합니다. 삭제할 매개변수입니다.

redis-cli  KEYS key* (查找条件) | xargs redis-cli  del

=>[실행 후 반환되는 결과 개수]: (정수) 10[수량 10]
실험을 수행하고 먼저 동일한 유형의 세 가지 키 값을 만듭니다

127.0.0.1:6379> set test1 1
OK
127.0.0.1:6379> set test2 2
OK
127.0.0.1:6379> set test3 3
OK

쿼리 키

127.0.0.1:6379>
1) " test3"
2) "test2"
3) "test1"

redis를 종료하고 로컬에서 삭제 명령을 실행합니다

[root@localhost redis]# redis-cli -a 密码 -n 0(数据库) keys "test*" |xargs redis-cli -a 密码 -n 0(数据库)  del
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
(integer) 3 (返回行数)

원리 분석:
이 명령은 먼저 Redis 클라이언트를 통해 키 명령을 실행하고 퍼지는 모든 키를 검색합니다. xargs 명령을 통해 이전에 쿼리한 키를 후속 redis del 명령의 입력으로 사용합니다
이것은 redis-cli del test1 test2 test3
를 실행하는 것과 같습니다. 참고: 여기에서 실행할 때 redis 조건을 가져와야 합니다. -a는 비밀번호를 입력하세요. - n은 지정된 데이터베이스입니다. redis가 로컬이 아니거나 다른 변경 사항이 있는 경우 -h redis 서버 IP, -p 포트를 추가해야 합니다.
예를 들어

redis-cli -h 127.0.0.1 (IP 주소) -p 6379 (포트 번호) -a 비밀번호-n 1 (데이터가 있는 데이터베이스 번호 쓰기) KEYS 키* (검색 조건) | xargs redis-cli (-h (IP 주소) -p 6379 (포트 번호) -a 비밀번호-n 1) del

보충 지식:

Deletion in redis
1. Redis DEL 명령은 기존 키를 삭제하는 데 사용되며 존재하지 않는 키는 무시됩니다.
예:

127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> del hello
(integer) 1

del은 하나 이상만 삭제할 수 있으며 다음과 같은 경우에는 일괄 삭제할 수 없습니다. 필요 삭제된 데이터의 양이 너무 많은 경우 해당되지 않습니다
2. Redis 서버 전체의 데이터 지우기: flashall
3 현재 라이브러리의 모든 키 지우기: flashdb

위 내용은 Redis에서 키 값 일괄 삭제 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제