[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.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.레디 스 아주 간단한 키 - 값 저장입니다. 네, 세트와 같은 다른 데이터 구조가 있지만, 그것은 아주 쿼리 기능을 제한하고있다. 당신이 이름으로 찾기 데이터를 얻을하려는 경우 예를 들어, 당신이 그런 일을 할 것입니다 :
레디 스 아주 간단한 키 - 값 저장입니다. 네, 세트와 같은 다른 데이터 구조가 있지만, 그것은 아주 쿼리 기능을 제한하고있다. 당신이 이름으로 찾기 데이터를 얻을하려는 경우 예를 들어, 당신이 그런 일을 할 것입니다 :
SET 이름은 "개체의 데이터를 직렬화"
SET NAME2는 "object2의 데이터를 직렬화"
SET NAME3는 "오브젝트 4의 데이터를 직렬화"
그때:
이름 GET
데이터를 반환합니다.
물론이 수단의 동일한 이름을 가진 두 개의 항목을 저장할 수있다.
사용 키에 제한 텍스트 매칭을 수행 할 수 있습니다 http://redis.io/commands/scan
요약 : 나는 당신이 복잡한 쿼리를위한 다른 도구를 사용한다고 생각합니다.
-
==============================
3.당신이 첫 번째 문제, SADD ID가 { "이름": "Saras"}는 "ID"열쇠가 세트되지 않기 때문에 // 잘못이 분명하다, 그것은 문자열 유형입니다.
당신이 첫 번째 문제, SADD ID가 { "이름": "Saras"}는 "ID"열쇠가 세트되지 않기 때문에 // 잘못이 분명하다, 그것은 문자열 유형입니다.
레디 스에서 데이터에 전용 액세스 포인트는 핵심하는 것입니다. 키스 말했듯이, 아마 당신은 다른 도구를 찾고해야합니다.
from https://stackoverflow.com/questions/38747339/how-to-store-array-of-objects-in-redis by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 레디 스의 TCP-백 로그 (0) | 2020.01.08 |
---|---|
[REDIS] 사용 1.7.0.M1 봄 - 데이터 - 레디 스 때 레디 스 클러스터를 config (설정)하는 방법 (0) | 2020.01.08 |
[REDIS] 데이터 집약적 인 애플리케이션을위한 일반 자바 효율 대 자바 + 레디 스? (0) | 2020.01.08 |
[REDIS] 레디 스 대량 삽입 (0) | 2020.01.08 |
[REDIS] 어떻게 레디 스 'ZRANK에 같은 점수에 대한 동일한 순위를 얻으려면? (0) | 2020.01.08 |