2012-10-08 3 views
3

빨간색이 해시를 사용 중이므로 여러 필드와 값이있는 해시 키를 저장해야합니다. 나는 다음과 같이 시도 :노드의 redis를 사용하여 해시 키의 모든 필드와 값 가져 오기

client.hmset("Table1", "Id", "9324324", "ReqNo", "23432", redis.print); 
client.hmset("Table1", "Id", "9324325", "ReqNo", "23432", redis.print); 
var arrrep = new Array(); 

client.hgetall("Table1", function(err, rep){ 
console.log(rep); 
}); 

출력은 다음과 같습니다 { Id: '9324325', ReqNo: '23432' }

나는 단지 하나 개의 값을 얻고있다. 해시 키의 모든 필드와 값을 가져 오는 방법은 무엇입니까? 내가 틀렸다면 코드를 얻도록 도와주세요. 감사.

답변

5

이전 값을 대체하기 때문에 하나의 값을 얻게됩니다.

client.hmset("Table1", "Id", "9324324", "ReqNo", "23432", redis.print); 

이렇게하면 Id, ReqNo가 Table1 해시 객체에 추가됩니다.

client.hmset("Table1", "Id", "9324325", "ReqNo", "23432", redis.print); 

이것은 표 해시 객체의 아이디와 ReqNo 우선합니다. 이 시점에서 해시에는 두 개의 필드 만 있습니다.

사실, 문제는 관계형 데이터베이스 모델을 Redis에 매핑하려고한다는 사실에서 비롯됩니다. 당신은해야하지. Redis를 사용하면 데이터 구조 및 액세스 경로를 생각해 보는 것이 좋습니다.

레코드 당 하나의 해시 객체를 저장해야합니다. 예를 들어 :

HMSET Id:9324324 ReqNo 23432 ... and some other properties ... 
HMSET Id:9324325 ReqNo 23432 ... and some other properties ... 

그런 다음 ID를 저장하는 세트를 사용할 수 있습니다 : 마지막으로

SADD Table1 9324324 9324325 

을 표 컬렉션에 관련된 ReqNo 데이터 검색 :

SORT Table1 BY NOSORT GET # GET Id:*->ReqNo 

당신이 만약을 주어진 ReqNo와 관련된 모든 ID를 검색하려면이 액세스 경로를 지원하는 또 다른 구조가 필요합니다.

SADD ReqNo:23432 9324324 9324325 

그래서 당신은 사용하여 기록 23432에 대한 ID의 목록을 얻을 수있다 : 즉

SMEMBERS ReqNo:23432 

을, 관계형 모델을 바꾸어하려고하지 않습니다 당신의 사용 사례를 지원하는 자신의 데이터 구조를 만들 수 있습니다.

+0

감사합니다. 디디 :) 확인해 보겠습니다. – vinod

+0

"SORT Table1 by NOSORT GET # GET Id : * -> ReqNo"노드에서이 줄을 사용하는 방법을 설명하고 ID에 해당하는 모든 필드를 표시 할 수 있습니까? – vinod

+0

방금 ​​코드를 작성하면 도움이되지 않습니다. 직접 시도하고 직접 볼 필요가 있습니다. 그리 어렵지 않습니다. SORT를 사용하면 사전 정의 된 필드 세트 만 검색 할 수 있습니다. 모든 필드를 검색하려면 SMEMBERS의 결과에 HGETALL을 사용해야합니다. –

관련 문제