복붙노트

[REDIS] 레디 스에서 필터링 요소

REDIS

레디 스에서 필터링 요소

나는 레디 스에 새로운 오전, 그래서 질문을 변명.

나는 해시의 목록을 만들려고 노력하고 있습니다. (JSON)에 예를 들면 :

{
  userList: [ 
    { id: 1, name: 'Foo', ranking: 10 },
    { id: 2, name: 'Bar', ranking: 5 }
  ]
}

그리고 내가 원하는 :

당신은 어떻게 레디 스의 마지막 스키마를 구현합니까? 그것은 수 있습니까?

어떻게 요소를 필터링하고, 그 중 일부를 제거하는 방법은 무엇입니까?

해결법

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

    1.레디 스 스키마가없는 것입니다. 당신은 데이터 저장 방식을 필요하자 전화.

    레디 스 스키마가없는 것입니다. 당신은 데이터 저장 방식을 필요하자 전화.

    한 가지 가능한 방법은 이러한 JSON 자신의 ID가 키와 JSON 텍스트가 값입니다 ID에 의해 개체를 추가 할 HSET 또는 HMSET을 사용하고 있습니다. 우리는 사용자로이 해시 전화 할게 : byid.

    이 문제의 첫 번째 부분입니다. 지금 당신은 id로 객체를 얻을 수 있습니다.

    이제 다음 문제는 당신이 순위 부르는의 범위에서 객체를 검색 할 수 있습니다. 이 취득하기 위하여는, 당신은 ZADD를 사용하여 정렬 된 세트에서 객체를 저장해야합니다. 정렬 된 세트는 별 정렬하고, 항목을 점수로 저장됩니다. 그것은 당신의 사용 사례에 대한 완벽한 소리!

    사실 당신은 전체 소트 세트에서 객체 ID를 저장하는거야 :

    zadd 사용자 : byranking 10 1 5 2

    ... (10) 지금의 스코어 (즉, 실제 값의 순위) 및 1 ID 및이다.

    그래서, 당신은 어떻게 순위에 의해 항목을 필터링? ZRANGEBYSCORE 사용 :

    소위 ZRANGEBYSCORE는 당신에게 검색 사용자의 ID를 제공 할 것입니다. 당신은 어떻게 자신의 JSON 텍스트를 가져? HMGET 사용 :

     HMGET users:byid 1 2
    

    ... 10 순위가 포함 된 경우, ID 1과 2 모두 사용자를 얻을 것이다.

  2. from https://stackoverflow.com/questions/33045710/filtering-elements-in-redis by cc-by-sa and MIT license