2010-08-24 2 views
55

저는 광산 프로젝트에 Redis를 사용하는 방법을 배우고 있습니다. 내가 머리를 쓰지 않은 한 가지는 바로 키 이름에 콜론이 정확히 사용되는 것입니다.Redis 키 내의 콜론의 목적은 무엇입니까

users:bob 
color:blue 
item:bag 

이 범주로 콜론 별도의 키와 빠른 키를 찾을 수 있도록 하는가 :

나는 이와 같은 키의 이름을 본 적 있어요? 그렇다면 하위 카테고리로 나누기 위해 키 이름을 지정할 때 여러 개의 콜론을 사용할 수 있습니까? 마지막으로 Redis 서버에서 다른 데이터베이스를 정의하는 것과 관련이 있습니까?

나는이 문제에 관해 문서를 읽고 수많은 Google 검색을 수행했지만 이상하게도이 문제를 논의 할만한 것을 찾을 수 없습니다.

답변

74

콜론은 이름 공간 데이터를 저장하기위한 개념으로 이전 버전에있었습니다.

SET user:bob:email [email protected] 
SET user:bob:age 31 

그들은 더 특별한 했다 : 당신은 이메일과 '밥'의 나이를 저장하기를 원한다면 초기 버전에서 레디 스는, 캐릭터 라인 만 지원하면 콜론이 사용되었다, 그래서 문자열로 모든 것을 저장했다 처리 또는 성능 특성에 영향을 미치지 않는 유일한 목적은 데이터를 다시 찾도록 네임 스페이스를 지정하는 것이 었습니다. 요즘 당신이 coloned 키의 대부분을 저장하는 해시를 사용할 수 있습니다 : 우리는 "밥"이라는 이름을 수 있지만, 사용자 접두사를의 네임 : "밥은 사용자"

HSET user:bob email [email protected] 
HSET user:bob age 31 

당신은 해시 이름을 필요가 없습니다 우리는 즉시이 해시가 가질 수있는 정보를 알고 있습니다.

+1

고마워, 정확히 내가 알아야 할 것이 었어. – Ryan

+2

'.'이 왜 이런 종류의 일에 대해 다양한 언어로 보일 때':'가 선택되었는지 궁금합니다. – CivFan

+2

아마도 객체 액세스를 위해 대부분의 언어에서 사용되는 포인트 연산자와 다를 수 있습니다. –

30

콜론은 키를 구성하는 방법입니다. 그들은 어떤 식 으로든 redis에 의해 해석되지 않습니다. 원하는 다른 구분 기호를 사용할 수도 있고 전혀 구분 기호를 사용할 수도 있습니다. 나는 개인적으로 /을 선호하는데, 이는 내 키를 파일 시스템 경로처럼 보이게 만든다. 성능에 영향을 미치지는 않지만 redis는 모든 키를 메모리에 유지해야하므로 지나치게 길게해서는 안됩니다.

SQL의 조인에 대한 응답 인 sort 명령의 성능을 활용하려면 키 구조가 중요합니다.

GET user:bob:color -> 'blue' 
GET user:alice:color -> 'red' 

SMEMBERS user:peter:friends -> alice, bob 

SORT user:peter:friends BY NOSORT GET user:*:color -> 'blue', 'red' 

당신은 키 구조가 구조화 된 키를 참조하여 사용자의 색상을 조회 할 SORT 수 있습니다 것을 볼 수 있습니다.

+1

/를 사용하는 것이 좋습니다! –