는, 그래서 여기에 있는지 우리가 같은 것들에 대해 얘기 할 수 있습니다 레디 스이 세트 분류에 대한 용어입니다 :
ZADD key score member [score] [member]
summary: Add one or more members to a sorted set, or update its score if it already exists
key
를 - '이름'의
score
을 설정 분류를 - 점수 (우리의 경우 타임 스탬프)
member
- 점수가 연결되는 문자열
- 정렬 된 집합에는 점수가있는 많은 구성원이 있습니다.
JSON으로 인코딩 된 객체 문자열을 회원으로 사용하는 것 같습니다. 구성원은 정렬 된 집합에서 고유 한 것입니다. 말한대로, 개체가 변경되면 정렬 된 집합에 새 구성원으로 추가됩니다. 그것은 아마도 당신이 원하는 것이 아닙니다.
정렬 된 집합은 타임 스탬프별로 데이터를 저장하는 Redis 방식이지만 집합에 저장된 구성원은 대개 Redis의 다른 키에 대한 '포인터'입니다.
내가 저장하는 것이 좋습니다 각각의 고유 한 미디어에 대한 문자열 또는 해시 모든 미디어를 저장 소트 세트 : 귀하의 설명에서
난 당신이 데이터 구조를 원한다고 생각 해시에있는 미디어 객체는 더 많은 유연성을 허용합니다. 예 :이 방법으로 저장된 데이터를 검색하는 방법은 두 가지가 있습니다
# add some members to our sorted set
redis 127.0.0.1:6379> ZADD media 1000 media:1 1003 media:2 1001 media:3
(integer) 3
# create hashes for our members
redis 127.0.0.1:6379> HMSET media:1 id 1 name "media one" content "content string for one"
OK
redis 127.0.0.1:6379> HMSET media:2 id 2 name "media two" content "content string for two"
OK
redis 127.0.0.1:6379> HMSET media:3 id 3 name "media three" content "content string for three"
OK
.특정 타임 스탬프 범위 (예 : 지난 7 일) 내에 구성원을 가져 오려면
ZREVRANGEBYSCORE
을 사용하여 구성원을 검색 한 다음
HGETALL
또는 그와 유사한 각 해시를 가져 오는 멤버를 반복해야합니다. 서버 호출 한 번으로 루프를 수행하는 방법은
pipelining을 참조하십시오. 당신은 단지 마지막 n 회원 얻고 싶은 경우에
redis 127.0.0.1:6379> ZREVRANGEBYSCORE media +inf -inf
1) "media:2"
2) "media:3"
3) "media:1"
redis 127.0.0.1:6379> HGETALL media:2
1) "id"
2) "2"
3) "name"
4) "media two"
5) "content"
6) "content string for two"
(또는 예 :에 10이 가장 최근의 가장 최근 100) 당신이 항목을 얻을 SORT
를 사용할 수 있습니다. 구문 및 다른 해시 필드를 검색하고 결과 및 기타 옵션을 제한하는 방법은 sort documentation을 참조하십시오.
redis 127.0.0.1:6379> SORT media BY nosort GET # GET *->name GET *->content1) DESC
1) "media:2"
2) "media two"
3) "content string for two"
4) "media:3"
5) "media three"
6) "content string for three"
7) "media:1"
8) "media one"
9) "content string for one"
NB : 점수 (BY nosort
)에 의해 정렬 된 해시를 정렬은 레디 스 2.6에서 작동합니다.
마지막 날, 주, 달 등의 미디어를 가져올 계획이라면 각 미디어에 대한 별도의 정렬 된 세트를 사용하고 ZREMRANGEBYSCORE
을 사용하여 이전 멤버를 제거하는 것이 좋습니다. 이러한 정렬 된 집합에 SORT
을 사용하여 데이터를 검색 할 수 있습니다.
감사합니다. 정확한 것을 찾고있었습니다. 한 가지 간단한 질문 : 중복되는 것을 원하지 않는 상황이 있으므로 정렬 된 집합을 검사 한 다음 해시를 추가하고 추가합니다. 나는 그것이 지나친 것이라고 묻고 싶었다. –