각 Foo가 정확하게 하나의 Bar에 매핑되고 각 Bar가 정확히 하나의 Foo에 매핑되는 컬렉션이 있습니다. 해당 Foo를 Bar로 지정하고 Foo가있는 해당 Bar를 검색 할 수 있어야합니다. 이 작업을 수행하기 위해Redis에서 양방향 해시 맵을 만드는 방법은 무엇입니까?
, 순간, 나는 두 HashMaps을을 만들었습니다, 내가 삽입을 할 때마다, 나는 2 HSET
의 각 해시 맵에 하나를 수행합니다 :이 후
HSET fooToBar foo1 bar1
HSET barToFoo bar1 foo1
, 조회를 어떤 방향으로도 매우 쉽습니다.
//Look up bar given a foo
HGET fooToBar foo1
//Look up foo given a bar
HGET barToFoo bar1
그러나이 솔루션은 완전히 만족스럽지 않습니다. 내가 이것을 사용하고있는 어플리케이션에서, 공간 제약이 속도 제약보다 더 중요 할 것입니다. 그리고 이것은 더 비싼 룩업 (이유 내에서)을 의미한다고해도 두 개가 아닌 하나의 데이터 구조를 갖는 것을 선호 할 것입니다.
Redis에서 양방향 해시 맵을 구현하는 더 좋은 방법이 있습니까?
개체의 크기는 얼마나됩니까? –
@AnthonyPalmer 각 하나는 그다지 크지 않지만, 그들 중 많은 수가 (수백만) 있습니다. Foos는 40-150 자 정도의 문자열입니다. 막대는 실제로 6-8 자리의 정수이지만 정수와 문자열 사이에서 변환되어 Redis 해시 맵에 사용됩니다. – bguiz