복붙노트

[REDIS] 레디 스에서 효율적인 인덱스 유형 작업

REDIS

레디 스에서 효율적인 인덱스 유형 작업

나는 일을하고 작업을 위해, 레디 스에서 인덱스의 집합을 만들려고하고 있습니다.

이 같은 :

그리고 나는 금발 머리와 파란 눈을 가진 모든 키를 찾을 수 소결을 사용할 수 있습니다.

이 같은 해시를 가지고 :

어떤 것은 결과 키를 가지고 가고, 일치하는 해시를 검색 할 수있는 가장 빠른 방법입니다.

이 데이터를보다 쉽게 ​​이해할 수 있도록하기 위해 내가 분석을 저장하기 위해이 사용하고 내가 키 조회의 다소 큰 세트를해야 할 것입니다 단지 데모입니다.

내가 멀티 파이프 라이닝되어 생각할 수있는이 옵션은 + 간부를 가져옵니다 또는 루아 스크립트를 사용하여 와이어를 통해 키의 무리를 보내는 방지 할 수 있습니다.

더 좋은 저장소 개체의 데이터에 대한 방법과 인덱스를 또는 네트워크를 통해 ID의 한 무리를 보내지 않고 그 해시의 모든 당겨 할 수있는 효율적인 방법이 있다면 ... 저를 작성하시기 바랍니다!

편집하다

I합니다 (레디 스 스크립팅 분기를 사용) LUA 스크립트를 사용하여 종료

local fkeys = redis.call('sinter', unpack(KEYS))
local r = {}
for i, key in ipairs(fkeys) do
  r[#r+1] = redis.call('hgetall',key)
end
return r

어느 DB 측에 모든 처리를 유지합니다.

해결법

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

    1.키 목록 얻기 다음 값을 얻기 위해 일을하는 것은 거의이 문제를 해결할 수있는 유일한 방법입니다. 숫자가 당신이 진짜 성능 문제를보기 전에 정말 큰해야 - 당신은 아마 매우 효율적으로 키를 얻을 수조차하지 않고 있지만 그것은 실험 루아 스크립트에 대한 좋은 유스 케이스와 같은 모양을한다.

    키 목록 얻기 다음 값을 얻기 위해 일을하는 것은 거의이 문제를 해결할 수있는 유일한 방법입니다. 숫자가 당신이 진짜 성능 문제를보기 전에 정말 큰해야 - 당신은 아마 매우 효율적으로 키를 얻을 수조차하지 않고 있지만 그것은 실험 루아 스크립트에 대한 좋은 유스 케이스와 같은 모양을한다.

    당신이 할 수있는 가능성이 추가 최적화가 가능하게 일시적으로 사용하거나 집합을 분류하거나 각 해시에서 하나의 관련 속성을 검색하지만, 이러한 사용자가 검색하고자하는 데이터의 종류에 크게 의존하고있다.

  2. from https://stackoverflow.com/questions/6399730/efficient-index-type-operations-in-redis by cc-by-sa and MIT license