[REDIS] 어떻게 해시 키에 대한 레디 스에서 검색하려면?
REDIS어떻게 해시 키에 대한 레디 스에서 검색하려면?
나는 사용자 정보를 같이 저장하는 해시 키를 사용하고 있습니다 :
hmset user:1 user_name lee age 21
hmset user:2 user_name david age 25
hmset user:3 user_name chris age 25
나는 나이 = 25, 이름 = 리를 가진 사용자를 검색 할 필요가있다. 어떻게 주어진 필드에 지정된 값에 대한 검색을 할까?
해결법
-
==============================
1.당신은 할 수 없습니다. 레디 스는 키 - 값 저장소가 아닌 관계형 데이터베이스입니다.
당신은 할 수 없습니다. 레디 스는 키 - 값 저장소가 아닌 관계형 데이터베이스입니다.
특정 데이터를 검색하기 위해,이 데이터에 액세스 경로를 구축해야합니다. 예를 들어, 사용자가 나이 = 25을 가지고 얻을, 당신은 사용자에게 나이 값을 매핑하는 인덱스를 구축해야합니다. 그것은 세트를 수행 할 수 있습니다. 이 이름에 대해 동일합니다.
당신은 나이와 이름에 대한 설정이되면, 당신은 세트를 교차하여 사용자를 검색 할 수 있습니다. 예를 들면 :
# Add 3 users hmset user:1 user_name lee age 21 hmset user:2 user_name david age 25 hmset user:3 user_name chris age 25 # Maintain age index sadd age:21 1 sadd age:25 2 3 # Maintain name index sadd name:lee 1 sadd name:david 2 sadd name:chris 3 # Get the ID of users having age = 25 and name = lee sinter age:25 name:lee -> will return an empty set
-
==============================
2.사실 당신은 키에 넣어 값으로 그것을 할 수 있습니다
사실 당신은 키에 넣어 값으로 그것을 할 수 있습니다
HMSET lee:25 user_name lee age 25 HMSET massi:43 user_name massi age 43 HMSET lee:24 user_name lee age 24 HMSET lee:28 user_name lee age 28 city Berlin
지금 당신은 "키"명령을 찾을 수 있습니다
127.0.0.1:6379> keys *:25 1) "lee:25" 127.0.0.1:6379> keys lee* 1) "lee:25" 2) "lee:24" 3) "lee:28" 127.0.0.1:6379> keys massi:43 1) "massi:43"
마지막으로 특정 해시를 찾을 수
127.0.0.1:6379> HGETALL lee:24 1) "user_name" 2) "lee" 3) "age" 4) "24"
내가 말한 모든 것은 두 단계에서 할 당신이 다음을 찾을 키 필요 값의 수를 넣을 수 있다는 것입니다. 그러나 키 그냥 당신이 함께 필터링 할 필요가 사람을 넣어 내부의 모든 값을 넣어 좋은 생각이 아니라고 생각. 건배 :)
from https://stackoverflow.com/questions/11470468/how-to-search-in-redis-for-hash-keys by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] nodeJS에서 펍 / 서브 구현 (0) | 2020.01.11 |
---|---|
[REDIS] 멀티 코어 CPU에 레디 스 성능 (0) | 2020.01.11 |
[REDIS] Sidekiq 처리되지 큐 (0) | 2020.01.11 |
[REDIS] 최대 절전 모드 두 번째 레벨 캐시로 레디 스 (0) | 2020.01.11 |
[REDIS] 합니까 레디 스 데이터를 지속? (0) | 2020.01.11 |