Redis는 일괄 삭제를 구현합니다.
1 redis 루트 디렉터리에 액세스합니다. cd /usr/local/redis-2.8.19
2 redis-cli -h 127.0.0.1 -p 6379( 127.0 .0.1을 포함하여 서버의 IP 주소로 쓸 수 있으며, 6379는 포트 번호입니다)
3. 모든 키 값 보기: 키 *
4. 지정된 인덱스 값 삭제: del key
5. 전체 Redis 서버의 데이터를 삭제합니다: flashall
6. 현재 라이브러리의 모든 키를 삭제합니다: flashdb [첫 번째 방법]: 다음은 "key_"로 시작하는 모든 Redis 데이터를 일괄 삭제하는 것입니다. is 100redis-cli -h (IP地址) -p 6379 (端口号:6379) KEYS key_* | xargs redis-cli (-h (IP地址) -p 6379 (端口号:6379)) del =>[执行后返回的结果影响数量]:(integer) 100[数量100个][위 명령의 DEL 함수 구체적인 사용법]:DEL 키 [키...]하나 이상의 지정된 키를 삭제합니다. 존재하지 않는 키는 무시됩니다. 시간 복잡도: O(N), N은 삭제된 키의 수입니다. 단일 문자열 유형 키를 삭제하면 시간 복잡도는 O(1)입니다. 단일 목록, 집합, 순서 집합 또는 해시 테이블 유형의 키를 삭제합니다. 시간 복잡도는 O(M)이고, M은 위 데이터 구조의 요소 수입니다. 반환 값: 삭제된 키 수. [예]:
# 删除单个 key redis> SET name huangz OK redis> DEL name (integer) 1 # 删除一个不存在的 key redis> EXISTS phone (integer) 0 redis> DEL phone # 失败,没有 key 被删除 (integer) 0 # 同时删除多个 key redis> SET name "redis" OK redis> SET type "key-value store" OK redis> SET website "redis.com" OK redis> DEL name type website (integer) 3[두 번째 방법]: 첫 번째 방법의 단점: 매번 연결을 설정해야 한다는 단점이 있으며, 금액이 크면 허용됩니다. , 효율성이 좋지 않습니다. 내장된 Lua 인터프리터를 통해 EVAL 명령을 사용하여 Lua 스크립트를 처리할 수 있습니다:
redis-cli -h(IP地址) -p 6379(端口号:6379) --EVAL "return redis.call('del', unpack(redis.call('keys', ARGV[1])))" 0 'Volume:*'[참고]: 그러나 이 처리 방법을 사용하면 볼륨이 클 경우 lua 함수 압축 해제 및 오류가 보고됩니다
''' (error) ERR Error running script (call to f_e177a091510d969af3b388ee986dbe6658df6b57): @user_script:1: user_script:1: too many results to unpack '''[ 두 번째 방법의 최적화 후]:[참고]: 먼저 패턴 일치에서 'Volume:'으로 모든 키를 저장하는 배열 키를 정의한 다음 for 루프 프로세스를 수행합니다. 매번 5000개의 키, 즉 매번 5000개의 키를 삭제합니다
redis-cli -h(IP地址) -p 6379(端口号:6379) --EVAL "local keys = redis.call('keys', ARGV[1]) for i=1,#keys,5000 do redis.call('del', unpack(keys, i, math.min(i+4999, #keys))) end return #keys" 0 'Volume:*'[두 번째 방법의 단점]: KEYS 작업은 온라인에서 금지됩니다! Redis는 단일 스레드입니다. 볼륨이 크면 키가 통과되어 차단이 발생하고 다른 클라이언트가 연결할 수 없게 됩니다! [세 번째 방법]: scan 명령은 redis2.8부터 지원되었습니다. 패턴 일치는 다음 형식을 사용하여 많은 수의 키를 일괄 삭제할 수 있습니다.
redis-cli -a youpassowrd -n 0 -p 6379 --scan --pattern "Volume:*" | xargs -L 5000 redis-cli -a youpassword -n 0 -p 6379 DEL[결과]:
''' /work/app/redis/bin/redis-cli -a youpassword -n 0 -p 6379 --scan --pattern "Volume:*" | xargs -L 5000 /work/app/redis/bin/redis-cli -a youpassword -n 0 -p 6379 DEL (integer) 5000 (integer) 5000 (integer) 5000 (integer) 5000 (integer) 5000 (integer) 5000 (integer) 5000 (integer) 207 '''더 많은 Redis 지식 ,
redis 소개 튜토리얼 칼럼을 팔로우하세요.
위 내용은 일괄 삭제를 위한 redis 명령 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!