redis 패턴 키 삭제하는 방법을 알아봅시다.

REDIS 2023. 4. 10. 23:00

 redis에서 특정 패턴을 가지는 키를 모두 삭제하는 방법이 없을까요? xargs를 이용하면 가능합니다.

 


 먼저 키 값이 h1:1, h1:2, h1:3, h1:4, h1:5인 것을 넣어보겠습니다.

 

 다음에 keys *를 입력하면 모든 키가 나옵니다. h1:2, h1:1, h1:3, h1:4, h1:5가 있습니다. 상당히 많은 키가 있는 경우에, 이들을 빠르게 삭제하고 싶은데요. redis에서는 패턴 삭제를 지원하지 않습니다. 대신에, 키를 삭제하는 연산과 특정 패턴을 가지는 키들을 보는 연산을 지원해 줍니다. 이를 이용해 봅시다.

 

 keys h1:*는 h1:으로 시작하는 패턴의 키들을 모두 얻어옵니다. h1:2, h1:1, h1:3, h1:4, h1:5가 모두 해당 패턴애 match가 되니까 출력되겠네요.

 

 shell에서 redis-cli keys "h1:*"를 입력하셔도 동일한 결과가 나오게 됩니다.

 

 

 h1:2라는 키를 제거하기 위해 redis-cli del h1:2를 입력하였습니다. 그랬더니 1개의 키가 제거되었습니다.

 


 결국 redis-cli keys 명령어와 redis-cli del 명령어를 잘 이용하면 된다는 결론을 얻었습니다.

 

xargs 명령어는 이 에서도 설명했다 시피, 출력값을 command line의 인자로 넘겨주게 됩니다.

 

 redis-cli keys "h1:*" | xargs redis-cli del 명령어는 redis에서 h1:* 패턴을 가지는 키들을 제거하게 됩니다. 이게 어떻게 일어나는지 간단하게 도식화 시켜 보겠습니다. 먼저, redis-cli keys "h1:*"를 하면, 아래와 같은 결과가 나올 겁니다.

 

 

 이 결과들이 xargs의 input으로 들어가게 됩니다.

 

 

 그러면 이것은 어떻게 입력으로 받을까요? redis-cli del h1:1 h1:3 h1:4 h1:5로 받게 됩니다. 즉, redis-cli del의 arguments들로 받아버리게 됩니다. redis에서 del key1 key2 ... 는 key1 key2 ... 를 삭제하는 것입니다. 따라서, redis-cli keys "h1:*" | xargs redis-cli del은 "h1:*" 패턴을 가진 모든 키를 제거합니다.

 

 이제 redis-cli을 켜서, keys h1:*을 입력해 봅시다. 그러면, empty array가 나옴을 확인할 수 있습니다.