복붙노트

[REDIS] 어떻게 가게에 레디 스에서 개체의 소트 세트?

REDIS

어떻게 가게에 레디 스에서 개체의 소트 세트?

나는 레디 스에있는 개체의 목록을 저장하는 방법을 알고 싶습니다. 즉 나는이 같은 키를 가지고있다.

users:pro
{ 
name: "Bruce", age: "20", score: 100,
name: "Ed", age: "22", score: 80
}

어디에서 특정 키의 값으로 해시의 목록을 저장하는 것이 좋습니다. 나는 소트 세트의 점수 필드로 점수 필드를 사용하고 싶습니다. 이걸 어떻게 달성 할 수 있을까?

나는 여러 해시와 정렬 된 세트에 대한 득점 필드로 행동해야 해시 필드 중 하나를 원하는 경우 어떻게 A가 키에 대한 하나의 해시를 넣어 작성 볼 수 있지만,있다?

해결법

  1. ==============================

    1.레디 스 중첩 된 데이터 구조를 지원하지 않는 모든 해시를 저장하는 데 하나의 키를 사용하면 일부 직렬화 필요합니다. 결과는 다음과 같다 :

    레디 스 중첩 된 데이터 구조를 지원하지 않는 모든 해시를 저장하는 데 하나의 키를 사용하면 일부 직렬화 필요합니다. 결과는 다음과 같다 :

    key: users:pro
             |
             +-----> field       value
                     name:Bruce  "age: 20, score: 100"
                     name:Ed     "age: 22, score: 80"
    
    > HMSET users:pro name:Bruce "age: 20, score: 100" name:Ed "age:22, score:80"
    

    해당 소트 세트는 다음과 같습니다

    key: users:pro.by_scores
             |
             +---> scores:    80           100
             +---> values: "name:Ed"   "name:Bruce"
    
    > ZADD users:pro.by_scores 80 "name:Ed" 100 "name:Bruce"
    

    주 1 :이 방법은 문제가 될 수있는 현재 이름 속성을 사용하는 사용자 별 고유 ID를 의무화.

    주 2 : 직렬화 (및 역 직렬화)을 방지하기 위해, 사용자 당 전용 키를 사용하여 고려할 수 있습니다. 수단 일을한다 :

    key: users:pro:Bruce
             |
             +-----> field       value
                     age         20
                     score       100
    
    key: users:pro:Ed
             |
             +-----> field       value
                     age         22
                     score       80
    
    > HMSET users:pro:Bruce age 20 score 100
    > HMSET users:pro:Ed age 22 score 80
    
    key: users:pro.by_scores
             |
             +---> scores:      80                100
             +---> values: "users:pro:Ed"   "users:pro:Bruce"
    
    > ZADD users:pro.by_scores 80 "users:pro:Ed" 100 "users:pro:Bruce"
    
  2. from https://stackoverflow.com/questions/27614975/how-to-store-sorted-set-of-objects-in-redis by cc-by-sa and MIT license