2014-04-12 3 views
2

방당, 건물 당 방의 이벤트 액세스 횟수를 추적하기 위해 Redis를 사용하고 있는데 이러한 계층 구조에 표시해야합니다. 각 방의 모든 이벤트를 볼 수 있지만 축소하고 건물 당 이벤트 집계를 얻을 수도 있습니다.Redis에서 값 집계

각 건물에는 고유 한 이름이 있습니다 (예 : PRH 및 건물의 각 방은 고유 한 번호를 갖습니다. 101, 2122.

액세스 이벤트를 저장하고 Redis에 집계하는 스키마와 최상의 방법에 대해 조언 해주십시오.

예를 들어, 내 계층 구조는 PRH : 101 : 5, PRH : 212 : 6이고 101 (5), 212 (6) 및 PRH (11)를 효율적으로 표시하고 싶습니다.

답변

2

새로운 레디 스 기능이 출시되기 시작했기 때문에 내 대답을 두 부분으로 나눌 것입니다. 그러나 아직 안정적이지는 않습니다.

레디 스 2.8.8 및 이전 버전

사용 Hash Set 레디 스의 데이터 유형 및 HINCRBY

HGET 카운터를 증가, 수행

HINCRBY building PRH 1 
HINCRBY room:PRH 101 1 
# The hash set nor the member doesn't have to exist beforehand. 
# If you need atomicity, bundle these commands in a Lua script. Parameterized, avoid Lua SHA1 changes to minimize Lua server-side mem usage. 
# Alternative for atomicity: use MULTI+EXEC 

을 약간 증가 후, 두 수준 모두에서 쿼리 할 수 ​​있습니다.

HGET building PRH 
# this gives you after 10 increments: PRH=10 


HGET room:PRH 101 
# this gives you after 5 increments to this room: PRH:101=5 

레디 스 2.9.x (미래)

숫자가 크고, 그것은 0.81 %의 표준 오차는 허용, 추정에 대해 플러스 있다면, 당신은 매우 효율적인 HYPERLOGLOG 구조/알고리즘을 사용할 수 있습니다. PFCOUNT을 참조하십시오.

이 도움이 ZRANGEBYLEX

희망 조사, 사전 식 정렬/쿼리와 결합 된 범위를 사용하려면

, TW