- Keys 명령어
- returns all keys matching pattern.
- O(N)
- 데이터가 많은 DB를 상대로 수행하는 경우에 성능저하 발생
- 리얼 환경에서 사용하는 것을 지양
- 해당 명령어는 디버깅, 키스페이스 레이아웃을 변경하는 것 같이 특별한 상황에만 사용하는 것을 권장.
- Sorted Sets
- O(log(n))
- 중복이 없는 문자열 콜렉션.
- 모든 데이터는 score와 매핑되어서 정렬되고 데이터자체는 유니크한 값이지만, score는 중복 될 수 있다.
- Sorted Sets에 데이터가 등록될 떄 순서대로 등록되기 때문에 (등록된 이후에 후처리로 정렬하는 것이 아님), 데이터의 범위와 랭크를 아주 빠르게 구할 수 있다.
- 중간에 있는 데이터에 접근 하는 것도 굉장히 빠르게 처리 가능.
- 배민에서 사용한 대표적인 command
- ZADD: (데이터를 순서대로 저장)
- O(log(n))
- 이미 있는 데이터를 다시 입력하는 경우 score가 업데이트 됨.
- 같은 score를 가진 데이터가 존재하는 경우에는 데이터의 바이너리 표현으로 정렬한다 (The lexicographic ordering used is binary, it compares strings as array of bytes)
- ZRANK: (대기순번 제공)
- O(logN)
- 조회하고자 하는 데이터의 랭크를 반환.
- ZRANGE: (일정한 수만큼 대기열에서 참가열로 이동)
- O(logN + M) / N = num of elements, M = numb of elements returned
- 조회하고자 하는 데이터의 범위를 반환
- ZADD: (데이터를 순서대로 저장)
- 배민에서는 대기열과 참가열로 사용함
- Sorted Sets의 내부구조 (Skip List)
- 이곳을 참고하여 테스트 해보기 http://redisgate.kr/redis/configuration/internal_skiplist.php
반응형