반응형
정렬된 셋에 대해서...
- 정렬된 셋 데이터의 특징은 아래와 같다.
- 셋 데이터와 유사한 구조를 가지고 있기 때문에 셋 데이터와 동일한 특징을 가짐.
- 요소 정렬이라는 부가적인 특징을 가짐.
- 정렬된 셋 명령의 접두사는 "Z"
- "Z" 로 시작하는 명령은 예외없이 모두 정렬된 셋 데이터의 명령임.
- 정렬된 셋 데이터는 셋 데이터 구조에 요소의 가중치(score) 값이 추가되어 있음.
- 가중치에 따라 각 요소의 정렬이 수행됨.
- 저장된 요소에 점수를 지정하거나 더하여 요소의 순서를 변경할 수 도 있음.
- 가중치에 입력가능한 값
- 정수 or 배정밀도 부동소수점
- 기본정렬순서 : 오름차순
- 즉, 가중치가 작은 데이터부터 큰 데이터의 순서로 정렬되어 조회됨.
- 단, 아래 명령을 통해서 내림차순으로 정렬된 결과를 조회할 수 있음.
- zrevrange
- 가중치를 보려면 정렬된 셋 명령어에 아래 키워드를 같이 사용함.
- withscores
- 셋 데이터와 동일하게 2의 32승 - 1개의 요소를 저정할 수 있음.
- 숫자로 바꾸어보면...대략 42억개가 넘게됨...^^;
- 정렬된 셋 데이터 저장구조
- 가장 많이 사용되는 곳
- 실시간 순위를 계산하는 데 사용할 수 있음.
정렬된 셋의 주요 명령어
- 내림차순으로 조회 명령
- zrevrange
- 명령) zrevrange [key] [start index] [end index] [withscores]
- 응답) <숫자응답>, 조회된 요소 목록
- 예시
- zrevrange
- 가중치 변경 명령
- zincrby
- 주어진 Key에 저장된 셋 데이터 중 지정된 요소의 가중치를 입력된 값만큼 증가시킴
- incr 명령과 동일하게 음수를 입력하여 값을 감소시킬 수 있음.
- 명령) zincrby [key] [increment member]
- 응답) <숫자응답>, 명령이 수행된 이후의 가중치 값
- zrank
- 주어진 Key에 저장된 셋 데이터 중 지정된 요소의 순위를 조회함.
- 조회되는 순위는 0부터 시작, 정렬은 가중치 오름차순.
- 명령) zrank [key] [member]
- 응답) <숫자응답>, 값이 존재하면 가중치 오름차순으로 정렬된 순위, 없으면 nil
- 주어진 Key에 저장된 셋 데이터 중 지정된 요소의 순위를 조회함.
- zrevrank
- 주어진 Key에 저장된 셋 데이터 중 지정된 요소의 순위를 조회함.
- 조회되는 순위는 0부터 시작, 정렬은 가중치 내림차순.
- 명령) zrevrank [key] [member]
- 응답) <숫자응답>, 갑이 존재하면 가중치 내림차순으로 정렬된 순위, 없으면 nil
- 주어진 Key에 저장된 셋 데이터 중 지정된 요소의 순위를 조회함.
- zrange
- 정렬된 셋의 범위 데이터를 오름하순으로 조회
- 명령) zrange [key] [start index] [end index] [withscores]
- 응답) <숫자응답>, 조회된 요소 목록
- 예시
- 그외의 아래 명령들은 Redis 홈페이지를 참고부탁드려요.. ^^;
- https://redis.io/commands#sorted_set
- zrangebyscore
- 정렬된 셋의 점수 범위에 해당하는 데이터 조회
- zremrangebyrank
- 정렬된 셋에서 순위에 해당하는 범위의 데이터 제거
- zremrangebyscore
- 정렬된 셋에서 가중치에 해당하는 범위의 데이터 제거
- 기타등등
- zrangebyscore
- https://redis.io/commands#sorted_set
- zincrby
- 순위 처리와 조회 명령
- zscore
- 주어진 Key에 저장된 셋 데이터 중 지정된 요소의 가중치를 조회함.
- 명령) zscore [key] [member]
- 응답) <숫자응답>, 주어진 요소가 존재하면 가중치, 없으면 nil
- zrevrangebyscore
- 정렬된 셋에 저장된 데이터의 가중치 범위에 해당하는 요소의 목록을 조회함.
- 아래 키워드를 추가하면 가중치를 함께 조회가능함.
- withscores
- 조회되는 목록 수를 조절하려면 아래 명령을 사용.
- limit
- 명령) zrevrangebyscore [key] [max] [min] [withscores] [limit 'offset' 'count']
- 응답) <숫자응답>, 조회된 값 목록, 결과가 없을 때 nil
- 예시
- zscore
- 정렬된 셋 명령의 특별한 표현식
- 정렬된 셋 데이터의 명령 중에서 가중치를 인자로 사용하는 명령은 특별한 표현식을 포함하여 사용할 수 있음.
- 무한대 표현식(inf : infinity 의 약자)
- +inf
- 양의 무한대(최대값)
- -inf
- 음의 무한대(최소값)
- +inf
- 초과/미만 표현식
- 초과, 미만 표현식
- 가중치 값의 앞에 왼쪽괄호 기호를 추가하여 표현함
- ex) (5, (7 과 같이...
- 가중치 값의 앞에 왼쪽괄호 기호를 추가하여 표현함
- 기본적으로 레디스는 명령의 인자에 입력되는 값을 포함하는 결과를 조회함.
- ex) zrange [key] 0, 1
- 0과 1을 포함한 결과를 제공함, 그래서 2개의 요소가 조회됨.
- 조회 결과가 최대값 or 최소값을 포함하지 않아야할 때가 발생할 수 도 있음.
- 이때, 초과, 미만 표현식을 사용함.
- 가중치가 정수인때는 별로 유용하지 않을 수도 있음.
- but, 가중치가 배정밀도 부동소수점이면 다른 이야기가 됨.
- ex) 5.999999 와 같은 값을 때 해당.
- 이때, 초과, 미만 표현식을 사용함.
- ex) zrange [key] 0, 1
- 초과, 미만 표현식
- 무한대 표현식(inf : infinity 의 약자)
- 예시
- 정렬된 셋 데이터의 명령 중에서 가중치를 인자로 사용하는 명령은 특별한 표현식을 포함하여 사용할 수 있음.
결론
- Redis 의 데이터 형 중에는 셋과 유사하지만, 스코어 즉, 가중치를 관리하고 있는 정렬된 셋도 존재함.
- 정렬된 셋을 통해서 주로 구현하는 기능은 실시간 랭킹을 계산하는 데 주로 사용함.
- 정렬된 셋 명령에는 특별한 표현식이 존재함.
- 무한대 표현식
- +inf , -inf
- 초과/미만 표현식
- 왼쪽괄호기호( "(" )
- 무한대 표현식
- 오늘의 명언 한마디
- 모든것은 두뇌를 훈련시켜 무엇을 찾을것인지 아는 힘과 좋은 투자 기회가 나타날때를 대비하는 힘을 기르는 것 부터 시작된다. -로버트 기요사키, 『부자아빠, 가난한아빠3』 중에서...
- 오늘의 영어 한마디
- 질문) Hey, that isn't cheep, you know!
- 정말 해도 너무한 거 아냐?
- 응답) I'm sorry. I didn't mean to do that.
- 미안해, 일부러 그런 게 아니야.
- 해설)
- "that isn't cheep" 는 소중한 것이나 값비싼 물건을 엉망으로 해놨을때, "싼것인줄알아!" 라고 쏘아 붙이는 표현.
- "you know"는 "알긴알아!", "알겠지" 라는 의미가 내포됨.
- 추가적으로 "How can you treat it that way? 는 "잘도 그런 짓을 했겠다."의 의미.
- 질문) Hey, that isn't cheep, you know!
300x250
'좋아하는 것_매직IT > 9.redis' 카테고리의 다른 글
14.Redis, Key 관리 명령에 대해서 알아볼께요.^^ (0) | 2021.01.14 |
---|---|
13.Redis, 리스트 데이터에 대해서 알아보자. (0) | 2021.01.14 |
11.Redis, 셋 데이터에 대해서 알아보자. (0) | 2021.01.14 |
10.Redis, 해시 데이터에 대해서 알아보자. (0) | 2021.01.14 |
9.Redis, 문자열 데이터에 대해서 알아보자. (0) | 2021.01.14 |