복붙노트

[REDIS] 노드 레디 스를 사용하여 해시 키의 모든 필드와 값을 가져옵니다

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'}

나는 단지 하나의 값을 얻고있다. 어떻게 해시 키의 모든 필드와 값을 얻으려면? 친절하게 도움이 나를 내가 잘못 나 코드를 얻을 수 있도록합니다. 감사.

해결법

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

    1.이전 값을 대체 때문에 하나 개의 값을 얻고있다.

    이전 값을 대체 때문에 하나 개의 값을 얻고있다.

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

    이것은 표 해시 객체에 아이디, ReqNo을 추가합니다.

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

    이것은 표 해시 객체의 아이디와 ReqNo 우선합니다. 이 시점에서, 당신은 단지 해시에서 두 개의 필드가 있습니다.

    사실, 문제는 레디 스에 관계형 데이터베이스 모델을지도하려고하는 사실을 형성 온다. 당신은해야하지. 레디 스, 데이터 구조 및 액세스 경로의 관점에서 생각하는 것이 좋습니다.

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

    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
    

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

  2. from https://stackoverflow.com/questions/12782844/get-all-fields-and-values-of-hash-key-using-redis-in-node by cc-by-sa and MIT license