Programing

Redis에서 키를 제거하려면 어떻게해야합니까?

lottogame 2020. 11. 21. 08:19
반응형

Redis에서 키를 제거하려면 어떻게해야합니까?


"user *"와 일치하는 키를 제거하고 싶습니다.

redis 명령 줄에서 어떻게합니까?


이것은 지금 당장 한 번에 할 수있는 기능이 아닙니다 ( DEL문서 의 주석 참조 ). 불행히도을 사용 KEYS하고 결과를 반복 한 다음을 사용 DEL하여 각각을 제거 하는 것만 남았습니다 .

bash를 사용하여 도움을주는 것은 어떻습니까?

for key in `echo 'KEYS user*' | redis-cli | awk '{print $1}'`
 do echo DEL $key
done | redis-cli

단계별로 진행하려면 :

  1. echo 'KEYS user*' | redis-cli | awk '{print $1}' -모든 키를 얻고 awk로 원하지 않는 추가 텍스트를 제거하십시오.
  2. echo DEL $key -각각에 대해 제거 할 echo 문을 만듭니다.
  3. | redis-cli -DEL 문을 가져 와서 다시 cli에 전달합니다.

이것이 최선의 방법이라고 제안하지 않습니다 (사용자 이름 중 일부에 공백이 있으면 문제가 발생할 수 있지만 요점을 알 수 있습니다).


내가 원하는 작업을 수행하는 데 사용하는 또 다른 컴팩트 한 줄은 다음과 같습니다.

redis-cli KEYS "user*" | xargs redis-cli DEL

이제 키를 제거하는 명령이 있습니다. 즉, DEL 키 [키]

DEL 키 ...


orangeoctopus의 대답에 더하여 echo, 파이프 가 필요하지 않으며 명령을 인수로 전달할 수 있습니다 redis-cli. 이것은 당신이 할 수 있음을 의미합니다

for key in `redis-cli "KEYS" "user*" | awk '{print $1}'`
 do redis-cli "DEL" "$key"
done

를 사용 awk하여 redis-cli KEYS명령 및 파이프 간 명령을 사용하여 redis에서 일치하는 모든 키를 찾습니다 redis-cli DEL.

redis-cli KEYS "user*"  | awk '{ system("redis-cli DEL " $1) }'

나는 이것이 오래되었다는 것을 알고 있지만 여기에 오는 사람들을 위해 Google에서 :

방금 Redis 데이터베이스에서 주어진 패턴 (심지어 또는 사용자에게 요청한대로) 과 일치하는 키를 삭제할 수있는 명령 줄 인터페이스 유틸리티를 npm 및 github에 게시했습니다 .

여기에서 유틸리티를 찾을 수 있습니다.

https://www.npmjs.com/package/redis-utils-cli


oneliner를 사용할 때 특정 문자가 이스케이프되는 경우 패턴을 편집 할 수 있습니다. 예를 들어 '\ b test \ b'와 같은 패턴을 삭제하려면 다음을 사용하십시오.

redis-cli --raw KEYS '\\b*' | sed 's/\\b/\\\\b/g' | xargs redis-cli del

백 슬래시, 따옴표, 큰 따옴표 또는 공백이있는 redis 키를 제거하려면 이것을 사용하십시오.

redis-cli KEYS "user*" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed "s/'/\\\\'/g" | sed 's/ /\\ /g' | xargs redis-cli DEL

참고 URL : https://stackoverflow.com/questions/8799063/in-redis-how-do-i-remove-keys

반응형