복붙노트

[REDIS] 어떻게 레디 스에서 개체의 배열을 저장하는?

REDIS

어떻게 레디 스에서 개체의 배열을 저장하는?

나는 레디 스에 저장하고자하는 객체의 배열을 가지고있다. 나는 배열 부분을 깨고 오브젝트로 저장하지만 난 내가 좋아하는 일도을 얻을 수있는 방법을지고 있지 않다 수

{0} : {"foo" :"bar", "qux" : "doe"}, {1} : {"name" "Saras", "age" : 23} 

다음 이름을 기준으로 DB를 검색하고 요청 된 키 다시 얻을. 나는 이런 식으로 뭔가를해야합니다. 하지만 점점 오른쪽에 가까이 올 수 없습니다.

incr id //correct
(integer) 3
get id //correct
"3"
SADD id {"name" : "Saras"} //wrong 
SADD myset {"name" : "Saras"} //correct
(integer) 1

먼저이 부분의 권리를 얻고있다.

두 번째는 어떻게 든 값에서 키를 받고있다 즉,

if name==="Saras"  
then key=1

어느 내가 힘든 찾을 수 있습니다. 아니면 객체의 배열로 직접 저장하고 간단한 for 루프를 사용할 수 있습니다.

 for (var i = 0; i < userCache.users.length; i++) {
            if (userCache.users[i].userId == userId && userCache.users[i].deviceId == deviceId) {
                return i;
            }
        }

친절 일부 구현에 가장 적합한 경로를 제안?

해결법

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

    1.I 일하고있는 것은 고유 식별자와 키를 저장하고, 데이터를 저장하고 추출하는 동안 JSON.parse을인가하면서 전체 개체 stringifying 하였다.

    I 일하고있는 것은 고유 식별자와 키를 저장하고, 데이터를 저장하고 추출하는 동안 JSON.parse을인가하면서 전체 개체 stringifying 하였다.

    예제 코드 :

    client
        .setAsync(obj.deviceId.toString(), JSON.stringify(obj))
        .then((doc) => {
            return client.getAsync(obj.deviceId.toString());
        })
        .then((doc) => {
            return JSON.parse(doc);
        }).catch((err) => {
            return err;
        });
    

    이 다시 계산 무거운 작업이며 JSON의 크기가 커지고, 경우 Node.js를 서버 차단 분석 다음과 stringifying 비록. 나는 아마 내 JSON 거대한되지 않을 것 알고 있기 때문에 낮은 복잡성에 대한 타격을 할 준비가되어 있지만,이 방법가는 동안 필요가 염두에 두어야 할 것이다.

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

    2.레디 스 아주 간단한 키 - 값 저장입니다. 네, 세트와 같은 다른 데이터 구조가 있지만, 그것은 아주 쿼리 기능을 제한하고있다. 당신이 이름으로 찾기 데이터를 얻을하려는 경우 예를 들어, 당신이 그런 일을 할 것입니다 :

    레디 스 아주 간단한 키 - 값 저장입니다. 네, 세트와 같은 다른 데이터 구조가 있지만, 그것은 아주 쿼리 기능을 제한하고있다. 당신이 이름으로 찾기 데이터를 얻을하려는 경우 예를 들어, 당신이 그런 일을 할 것입니다 :

    SET 이름은 "개체의 데이터를 직렬화"

    SET NAME2는 "object2의 데이터를 직렬화"

    SET NAME3는 "오브젝트 4의 데이터를 직렬화"

    그때:

    이름 GET

    데이터를 반환합니다.

    물론이 수단의 동일한 이름을 가진 두 개의 항목을 저장할 수있다.

    사용 키에 제한 텍스트 매칭을 수행 할 수 있습니다 http://redis.io/commands/scan

    요약 : 나는 당신이 복잡한 쿼리를위한 다른 도구를 사용한다고 생각합니다.

  3. ==============================

    3.당신이 첫 번째 문제, SADD ID가 { "이름": "Saras"}는 "ID"열쇠가 세트되지 않기 때문에 // 잘못이 분명하다, 그것은 문자열 유형입니다.

    당신이 첫 번째 문제, SADD ID가 { "이름": "Saras"}는 "ID"열쇠가 세트되지 않기 때문에 // 잘못이 분명하다, 그것은 문자열 유형입니다.

    레디 스에서 데이터에 전용 액세스 포인트는 핵심하는 것입니다. 키스 말했듯이, 아마 당신은 다른 도구를 찾고해야합니다.

  4. from https://stackoverflow.com/questions/38747339/how-to-store-array-of-objects-in-redis by cc-by-sa and MIT license