[REDIS] 레디 스의 많은 많은 관계를 가지고하는 방법
REDIS레디 스의 많은 많은 관계를 가지고하는 방법
관계형 데이터베이스에, 나는 사용자 테이블, 카테고리 테이블과 많은 관계로 많은 작업을 수행 사용자 카테고리 테이블이 있습니다. 레디 스에서이 구조의 더 나은 형태는 무엇입니까?
해결법
-
==============================
1.레디 스으로 관계는 통상적으로 세트로 표현된다. 당신은 다 대다 관계를 표현하기 위해 객체 당 하나 개의 세트를 필요로하므로 세트는, 단방향 관계를 나타내는 데 사용할 수 있습니다.
레디 스으로 관계는 통상적으로 세트로 표현된다. 당신은 다 대다 관계를 표현하기 위해 객체 당 하나 개의 세트를 필요로하므로 세트는, 단방향 관계를 나타내는 데 사용할 수 있습니다.
레디 스 데이터 구조에 관계형 데이터베이스 모델을 비교하려고 꽤 쓸모가 없다. 레디 스로, 모든 비정규 방법으로 저장됩니다.
예:
# Here are my categories > hmset category:1 name cinema ... more fields ... > hmset category:2 name music ... more fields ... > hmset category:3 name sports ... more fields ... > hmset category:4 name nature ... more fields ... # Here are my users > hmset user:1 name Jack ... more fields ... > hmset user:2 name John ... more fields ... > hmset user:3 name Julia ... more fields ... # Let's establish the many-to-many relationship # Jack likes cinema and sports # John likes music and nature # Julia likes cinema, music and nature # For each category, we keep a set of reference on the users > sadd category:1:users 1 3 > sadd category:2:users 2 3 > sadd category:3:users 1 > sadd category:4:users 2 3 # For each user, we keep a set of reference on the categories > sadd user:1:categories 1 3 > sadd user:2:categories 2 4 > sadd user:3:categories 1 2 4
우리는이 데이터 구조가되면, 설정 대수를 사용하여 쿼리하기 쉽습니다 :
# Categories of Julia > smembers user:3:categories 1) "1" 2) "2" 3) "4" # Users interested by music > smembers category:2:users 1) "2" 2) "3" # Users interested by both music and cinema > sinter category:1:users category:2:users 1) "3"
-
==============================
2.이럴 레디 스 구조화 querys (SQL)하지만 빠른 accesible 데이터를, 당신이 할 수있는 것은 이것이다를 만들기위한되지 않습니다 : 키와 데이터가 예를 들어, 친구와 함께 목록으로 USER_ID와 "표"를 확인합니다. 그럼 당신은 당신이 필요로하는 무엇을 USER_ID 및 프로세스에 대한 쿼리. 그것은 정상화의 반대입니다. 데이터의 순서가 예를 들어, 상태 업데이트에 대한 importante 인 경우, 당신이 무엇 목록에 푸시와 팝의 데이터입니다. 예를 들어, 테이블의 "상태"키로 USER_ID 가지며 데이터리스트이다. 당신은 데이터를 lpush 다음 예를 들어 지난 20 개 요소를 쿼리합니다.
이럴 레디 스 구조화 querys (SQL)하지만 빠른 accesible 데이터를, 당신이 할 수있는 것은 이것이다를 만들기위한되지 않습니다 : 키와 데이터가 예를 들어, 친구와 함께 목록으로 USER_ID와 "표"를 확인합니다. 그럼 당신은 당신이 필요로하는 무엇을 USER_ID 및 프로세스에 대한 쿼리. 그것은 정상화의 반대입니다. 데이터의 순서가 예를 들어, 상태 업데이트에 대한 importante 인 경우, 당신이 무엇 목록에 푸시와 팝의 데이터입니다. 예를 들어, 테이블의 "상태"키로 USER_ID 가지며 데이터리스트이다. 당신은 데이터를 lpush 다음 예를 들어 지난 20 개 요소를 쿼리합니다.
from https://stackoverflow.com/questions/10907942/how-to-have-relations-many-to-many-in-redis by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 마라톤에서 실행 레디 스 (메소) 하나의 URL에서 (0) | 2019.12.30 |
---|---|
[REDIS] BookSleeve를 사용하여 오픈 레디 스 연결을 유지 (0) | 2019.12.30 |
[REDIS] 데이터보다 10 배 더 많은 메모리 사용량을 레디 스 (0) | 2019.12.30 |
[REDIS] 왜 데이터는 봄 데이터와 Jedis를 사용하여 레디 스에서 이상한 키와 함께 저장지고? (0) | 2019.12.30 |
[REDIS] 레디 스는 메모리가 부족하면 어떻게합니까? (0) | 2019.12.30 |