특정 키에 멤버를 추가 할 수 있다. 멤버를 추가 할 때는 스코어(score)를 설정 할 수 있다. 멤버는 스코어를 기준으로 정렬되서 저장된다. 이미 존재하는 멤버라면 멤버의 스코어가 업데이트되며, 재 정렬된다. 스코어&멤버 쌍으로 저장이 되며, 하나 이상을 설정 할 수 있다.
key 가 없다면, 새로운 key가 만들어지고 첫 멤버가 추가된다. 스코어는 부동 소수점 숫자여야 한다.
ZADD 옵션 (Redis 3.0.2 이상)
ZADD는 키 이름 다음에 몇 개의 옵션을 설정 할 수 있다. 옵션은 아래와 같다.
XX : 이미 멤버가 존재할 때만 업데이트를 한다. 멤버가 없다면 추가하지 않는다.
NX : 이미 멤버가 존재할 경우 업데이트를 하지 않는다. 항상 새 멤버를 추가한다.
INCR : ZINCRBY와 같은 역할을 한다. 스코어를 기존 스코어에 더한다.
CH : 몇 개의 멤버의 값이 업데이트 됐는지를 출력한다.
정수 범위
REDIS sorted set은 double 64 비트 부동 소숫점을 이용해서 스코어(score)를 나타낸다. 값은 -2^53 에서 2^53 사이의 정수를 정확히 표현 할 수 있는 IEEE 754 부동 소수점 숫자로 표현된다. -9007199254740992에서 9007199254740992 사이의 정수를 완벽하게 나타낼 수 있다. 이 보다 더 정수는 내부적으로 지수 형식으로 표현하기 때문에 근사치 값만을 얻을 수 있다.
Sorted sets 기본
Sorted sets은 스코어를 기준으로 오름차순으로 정렬된다. 동일한 멤버는 하나만 존재할 수 있다. 추가하려는 멤버가 이미 존재해서 기존 스코어를 업데이트 할 경우 새로 정렬이 된다. 이전 스코어를 기준으로 상대적인 값으로 업데이트를 하고 싶다면 ZINCRBY를 사용한다.
멤버의 스코어는 ZSCORE 명령으로 검색 할 수 있다. ZSCORE 명령은 멤버가 존재하는지를 확인하는 용도로도 사용 할 수 있다.
값은 스코어를 가지는 멤버의 추가
Sorted sets에는 오로지 모든 멤버가 유일하다. 동일한 2개 이상의 멤버가 존재 할 수 없다. 하지만 같은 스코어를 가지는 멤버는 존재할 수 있다. 같은 스코어를 가지는 여러 멤버가 존재할 경우 이 멤버들은 사전순으로 정렬된다.(즉 우선 스코어에 따라 정렬이되며, 스코어가 같을 경우 사전을 기준으로 정렬된다.)
ZRANGEBYLEX명령을 사용하면, 멤버에 대한 범위 쿼리가 가능하다. 또한 ZRANGEBYSCORE를 사용해서 스코어 범위별로 정렬된 검색을 할 수 있다.
리턴 값
Integer 정수 값을 리턴한다.
Sorted Set에 추가된 멤버의 갯수다. 같은 이름의 멤버가 있을 경우, 스코어만 업데이트 되며 추가 멤버 갯수에는 포함되지 않는다.
Contents
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
- 사용가능한 버전 : 1.2.0 이상
- 시간복잡도 : 아이템 추가는 O(log(N))이다. N은 sorted set에 저장된 아이템의 갯수다.
특정 키에 멤버를 추가 할 수 있다. 멤버를 추가 할 때는 스코어(score)를 설정 할 수 있다. 멤버는 스코어를 기준으로 정렬되서 저장된다. 이미 존재하는 멤버라면 멤버의 스코어가 업데이트되며, 재 정렬된다. 스코어&멤버 쌍으로 저장이 되며, 하나 이상을 설정 할 수 있다. key 가 없다면, 새로운 key가 만들어지고 첫 멤버가 추가된다. 스코어는 부동 소수점 숫자여야 한다.ZADD 옵션 (Redis 3.0.2 이상)
정수 범위
Sorted sets 기본
값은 스코어를 가지는 멤버의 추가
리턴 값
- Sorted Set에 추가된 멤버의 갯수다. 같은 이름의 멤버가 있을 경우, 스코어만 업데이트 되며 추가 멤버 갯수에는 포함되지 않는다.
INCR 옵션이 설정됐을 경우 업데이트된 스코어가 리턴된다.예제
응용
참고
Recent Posts
Archive Posts
Tags