2017-05-10 8 views
1

redis 서버에서 패턴을 사용하여 KEYS를 삭제하려고하는데 삭제되지 않습니다.redis-cli를 사용하여 redis 서버에서 키를 삭제하십시오.

샘플 키

1) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x03\t\xa0\x01" 
2) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x03\t\x98\x02" 
3) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x03\t\xb8\x02" 
4) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x02\t!" 
5) "flc_1310sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x02\t~" 
6) "flc_1310sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x03\t\xc0\x02" 
7) "flc_-41sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x03\t\xc5\x01" 
8) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x03\t\x94\x03" 
9) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x03\t\xd3\x01" 
10) "flc_77sandeep-pant-back.int.dev.mykronos.com_personality:\xac\xed\x00\x05w\x0e\x03\x01SecondaryKe\xf9:\xac\xed\x00\x05w\x03\t\xee\x02" 

명령

 
redis-cli KEYS *sandeep-pant* | xargs redis-cli DEL 

출력

xargs: WARNING: a NUL character occurred in the input. It cannot be passed through in the argument list. Did you mean to use the --null option? 
xargs: unmatched double quote; by default quotes are special to xargs unless you use the -0 option 
(integer) 0 
+1

에 배치해야 마커 인'*'나는 키 패턴을 사용하고 노력하고 삭제 시도 떠들썩한 제어 문자 – h0x91B

답변

0

당신은 아마을 읽고 싶어- 그렇게하면 키 이름 패턴을 허용하지 않습니다 (예 : 와일드 카드). 삭제에는 정확한 키 이름이 필요합니다.

+0

입니다. [루트 @ dmc31 ~] # redis-cli SET 키 1 "Hello" [root @ dmc31 ~] # redis-cli SET 키 2 "세계" OK [root @ dmc31 ~] # redis-cli KEYS \ * 키 \ * 1) "key2" 2) "key1" [root @ dmc31 ~] # redis-cli KEYS \ * 키 \ * | xargs redis-cli DEL (정수) 2 –

2

배쉬 코드 : 대신 SCAN를 사용하여 암호

2

은 블록 조작이기 때문에 당신은 KEYS를 사용하지 말아야을 필요로하지 않을 경우

for k in $(redis-cli -a password1 keys "*"); do 
    echo "delete key '$k'"; 
    redis-cli -a password1 DEL $k; 
done 

-a password1를 제거합니다. 당신이 글로브 패턴을 사용하는 경우 , 따옴표로 둘러싸 :

redis-cli --scan --pattern '*sandeep-pant*' | xargs -L 100 redis-cli del

당신은 100 키마다 함께 배치에 DEL 작전을 -L 100를 사용할 수 있습니다.

+1

그래, 이것보다 훨씬 좋아. – h0x91B

1

당신은 bash는 스크립트가이 한 줄을 사용하여 작성하지 않으려면

redis-cli --scan --pattern "*sandeep-pant*" | sed -e 's/^/"/g' -e 's/$/"/g' | xargs -i redis-cli del {} 

설명 :

  1. 가 나오지
  2. 처음에 따옴표를 추가 라인으로 일치하는 키 라인을 가져옵니다 각 키의 끝
  3. xargs는 레코드를 하나씩 삭제합니다.

는 {} 키를 스크립트