복붙노트

[REDIS] 키 이름 지정 규칙을 레디 스?

REDIS

키 이름 지정 규칙을 레디 스?

레디 스에서 키에 대한 일반적인 명명 규칙은 무엇입니까? 나는에 의해 구분 된 값을 본 적이 :하지만 난 왜 일반 규칙이 무엇인지 확실하지 않다, 또는.

사용자를 들어 당신이 뭔가를 할 것입니다 ...

사용자 : 00

사용자의 ID가 00 인 경우

모든 사용자를 반환하는 키의 시작에 불과 쿼리 할 수 ​​있습니까?

나는 주로 그냥 가지 방법으로 그 사람을위한 작업과 왜 그들을 선택을 연구하여 향후 문제가 발생하지 않도록 바라고 있어요.

해결법

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

    1.예, 대장 기호 : 키 이름을 지정할 때 관례이다. 레디 스 웹 사이트에이 튜토리얼에서 언급되는 : 스키마를 고수하려고합니다. 예 ": ID : 객체 형 필드"를 할 수 있습니다 멋진 아이디어처럼 "사용자 : 1000 : 비밀번호". 나는에 대한 도트를 사용하려면 멀티 단어의 분야에서와 같은 "코멘트 : 1234 : reply.to".

    예, 대장 기호 : 키 이름을 지정할 때 관례이다. 레디 스 웹 사이트에이 튜토리얼에서 언급되는 : 스키마를 고수하려고합니다. 예 ": ID : 객체 형 필드"를 할 수 있습니다 멋진 아이디어처럼 "사용자 : 1000 : 비밀번호". 나는에 대한 도트를 사용하려면 멀티 단어의 분야에서와 같은 "코멘트 : 1234 : reply.to".

    직접 사용자로 시작하는 모든 키를 쿼리 같이가 someting 의미 경우 : a 키가에 대한 명령이 있습니다. 이 명령은 그러나 오직 모든 키를 통해 그것의 검색 데이터베이스에 strored 때문에 그것의 O (N) 이후 디버깅 목적을 위해 사용되어야한다.

    이 문제에 대한 더 적절한 솔루션은 전용 키를 생성하는 것입니다,하자의 이름은 목록 또는 설정 데이터 구조, 예를 들어, 모든 사용자의 키를 저장하는 사용자입니다.

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

    2.우리는 공간 분리 및 예컨대 키의 ID-부품에 대한 해시 (#)로 : (콜론을 사용합니다 :

    우리는 공간 분리 및 예컨대 키의 ID-부품에 대한 해시 (#)로 : (콜론을 사용합니다 :

    logistics:building#23
    
  3. ==============================

    3.규칙은 콜론 (것 같습니다 :)하지만 난 개인적으로 구분 기호 슬래시 (/)를 선호 그래서 나는 웹 개발자입니다. 슬래시는 이미 자원에 대한 범용 리소스 로케이터 그래서 종류의 키가 될 의미의 URL 내에서 매우 중요한 구분이다. 왜 콜론 (:)으로 다른 접근 방식을 취할? 그것은 어떤 도움이됩니까?

    규칙은 콜론 (것 같습니다 :)하지만 난 개인적으로 구분 기호 슬래시 (/)를 선호 그래서 나는 웹 개발자입니다. 슬래시는 이미 자원에 대한 범용 리소스 로케이터 그래서 종류의 키가 될 의미의 URL 내에서 매우 중요한 구분이다. 왜 콜론 (:)으로 다른 접근 방식을 취할? 그것은 어떤 도움이됩니까?

    이 예제를 생각해 봅시다 :

    우리는 장난감 객체를위한 편안하고 API가 있습니다. 하나가있다 :

    http://example.com/api/toy/234 
    

    우리는 어디를 저장 한? 키가 명백하다 그래서 우리는 레디 스 및 슬래시를 사용합니다 :

    toy/234
    

    이 장난감에 대한 고유 키입니다. 키는 이제 클라이언트 측에서 사용할 수 있습니다 :

    {
        key: "toy/234",
        color: "red",
        url: function () {
            return API_BASE_URL + this.key;
        }
    }
    

    사용자는 키 장난감 / 666와 객체를 요청합니다. 어떻게 레디 스에서 얻을 수 있습니까? Node.js를 관련 예 :

    redis.get(key, function reply_callback(error, toystring) {
        var toy = JSON.parse(toystring);
        ...
    }
    

    콜론 및 그 반대로 변환 슬래시 할 필요가 없습니다. 편리한, 당신은 생각하지 않아?

    참고 : 항상 사용자가 의도 만 가지에 액세스 할 수 있는지 확인합니다. 원시 URL - 투 - 키 방식은 위의 해설자가 언급 한 바와 같이,뿐만 아니라 사용자 / 1 / 비밀번호를 가져올 수 있습니다. 공용 읽기 전용 캐시로 레디 스를 사용하는 경우이 문제가되지 않습니다.

  4. ==============================

    4.정말 아직 이름 레디 스 키에 대한 광범위한 "모범 사례"가 있는지 모르겠어요.

    정말 아직 이름 레디 스 키에 대한 광범위한 "모범 사례"가 있는지 모르겠어요.

    나는 (모두 8 비트 깨끗 레디 스 파이썬 이후) 내 구분자로 아스키 NUL 문자를 사용하여 실험했습니다. 당신은 원시 키에서 찾고 있다면 그것은 조금 추한 보이지만, 아이디어는 추상화 계층 뒤에 숨길 것입니다. 콜론 및 파이프 기호는 너무 오래 당신의 이름 공간의 구성 요소 중 하나를 보장로 사용하지 않는 명백한 대안하거나 필요에 따라 각 구성 요소를 인코딩 기꺼이. 당신이 다음을 인코딩 할 거라고는 추상화 계층을 개발하고 싶어하고 ... 어쨌든 보는 원시 키를 피하는 경우, 이는 곧 다시 그냥 내 추론에 \ 0을 사용하는 저를 가져왔다.

    나는 어떤 다른 의견이에 관절 경우보고에서 흥미로운 일이 될 것이다.

  5. ==============================

    5.당신의 유스 케이스를 위해 나에게 HSET / HGET이 더 잘 맞는 것 같다. HKEYS 명령도 있습니다.

    당신의 유스 케이스를 위해 나에게 HSET / HGET이 더 잘 맞는 것 같다. HKEYS 명령도 있습니다.

    그 모든 명령은 왜 사용하지, GET / SET / 키와 같은 복잡성을 가지고?

    그런 다음이 구조를 가질 수있다 :

    또는:

    그냥 사용자의 ID를 추출하고 해시 키로 사용합니다. 나는 개인적으로 더 좋은 느낌으로이 방법을 선호하고 또한 쉽게 쿼리 기존 사용자 ID에 대한.

  6. from https://stackoverflow.com/questions/6965451/redis-key-naming-conventions by cc-by-sa and MIT license