복붙노트

[REDIS] 레디 스를 통해 Node.js를 응용 프로그램에서 중첩 된 해시를 저장

REDIS

레디 스를 통해 Node.js를 응용 프로그램에서 중첩 된 해시를 저장

나는 node_redis를 사용하고 있는데 나는 같은 구조를 저장하려면 :

{
users : 
    "alex" : { "email" : "alex@gmail.com",
           "password" : "alex123"},
    "sandra" : { "email" : "sandra@gmail.com",
           "password" : "sandra123"},
    ...
}

현재, 각 사용자에 대해 내가 JSON 객체를 생성 :

jsonObj = { "email" : "alex@gmail.com",
            "password" : "alex123"}

과을

db.hmset("alex", JSON.stringify(jsonObj))

그것은 다른 구조의 내장이 구조 가능 (사용자의 하나?) 어떻게이 구조를 사용자 [ "알렉스"] 설정할 수 있습니다?

해결법

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

    1.내가 아는 한이 레디 스에서 중첩 된 구조를 기본적으로 지원하지 않지만 그들은 (계층 나무와 유사) 세트 + 해시와 예를 들어 모델링 할 수 있습니다. 해시 필드 및 아마도 단일 JSON 객체의 값을 저장하기에 가장 적합하다. 내가 뭘 할 것은, 예를 들어, (A 레디 스 규칙은) 접두사와 각 사용자를 저장하는 것입니다 :

    내가 아는 한이 레디 스에서 중첩 된 구조를 기본적으로 지원하지 않지만 그들은 (계층 나무와 유사) 세트 + 해시와 예를 들어 모델링 할 수 있습니다. 해시 필드 및 아마도 단일 JSON 객체의 값을 저장하기에 가장 적합하다. 내가 뭘 할 것은, 예를 들어, (A 레디 스 규칙은) 접두사와 각 사용자를 저장하는 것입니다 :

    db.hmset("user:alex", JSON.stringify(jsonObj));
    

    다음 키라는 이름의 사용자와 한 세트로 그룹 사용자에게 세트를 사용합니다. 그때 hgetall와 개별적으로 각각의 smembers이 명령에 의해 사용자의 키를 모두 얻을 액세스 할 수 있습니다.

  2. ==============================

    2.당신은 객체로 하위 구조를 저장하고 오히려 포인터처럼 주요 구조 내에서의 ID를 저장할 수 있습니다. 따라서, 귀하의 예를 주어, 나는 다음을 수행 할

    당신은 객체로 하위 구조를 저장하고 오히려 포인터처럼 주요 구조 내에서의 ID를 저장할 수 있습니다. 따라서, 귀하의 예를 주어, 나는 다음을 수행 할

    {
    users : 
        "alex" : { "email" : "alex@gmail.com",
               "password" : "alex123"},
        "sandra" : { "email" : "sandra@gmail.com",
               "password" : "sandra123"},
        ...
    }
    $x = incr idx:user
    hmset user:$x email alex@gmail.com password alex123
    sadd list:user $x
    
    $x = incr idx:user
    hmset user:$x email sandra@gmail.com password sandra123
    sadd list:user $x
    

    이 해결 방법이 도움이되기를 바랍니다

  3. from https://stackoverflow.com/questions/5701491/save-nested-hash-in-redis-via-a-node-js-app by cc-by-sa and MIT license