복붙노트

[REDIS] SQLite는의 레디 스 포팅

REDIS

SQLite는의 레디 스 포팅

나는 8-10 열을 저장하는 데 사용하는 응용 프로그램에 대한 SQLite는을 사용했다. 나는 그 속성의 수의 조합에 따라 데이터를 검색하는 데 사용됩니다. 지금은 레디 스에 포트합니다. 나는 그것을 위해 테스트 응용 프로그램을 구축했다 그래서.

그러나 나는 이러한 속성 중 하나를 기반으로 데이터를 검색 할 수있을 것이라고 방식으로 내 레디 스 시스템을 설계하는 방법을 생각 할 수없는입니다. 당신의 어떤 어떤 조언 / 경험을 가지고?

해결법

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

    1.나는 최선의 충고는 레디 스에 RDBMS에서 무언가를 이식 할 때 관계형 모델에 집착하지 않도록하는 것입니다 생각합니다. 그리고 모델을 넘어, 중요한 차이는 데이터 액세스 경로뿐만 아니라 데이터 구조에 집중하는 것입니다.

    나는 최선의 충고는 레디 스에 RDBMS에서 무언가를 이식 할 때 관계형 모델에 집착하지 않도록하는 것입니다 생각합니다. 그리고 모델을 넘어, 중요한 차이는 데이터 액세스 경로뿐만 아니라 데이터 구조에 집중하는 것입니다.

    레디 스는 (오히려 명령 라 memcached를) 쿼리 언어를 포함하지 않기 때문에 임의의 질의에 회신 할 수 없습니다. 데이터의 액세스 경로 데이터 구조의 일부가 아닌 경우, 데이터를 효율적으로 검색 할 수있다.

    그것은 임의의 쿼리를 지원에 관해서 레디 스 최고의 NoSQL에 저장되지 않습니다. 예를 들어, 당신은 더 나은 MongoDB를 같은 의해 제공 될 것이다.

    당신이 정말로 레디 스에 물건을 구현하려는 경우 지금, 당신은 엔진을 태그와 유사한 전략을 사용을 시도 할 수 있습니다. 귀하의 기록은 해시 객체에 저장할 수 있습니다. 당신이 지원을 필요로하는 임의의 쿼리의 각 컬럼의 경우, 당신은 세트를 사용하여 역 인덱스를 구축 할 수 있습니다.

    예를 들어 :

    # Set up the records: one hash object per record
    hmset user:1 name Bilbo type Hobbit job None
    hmset user:2 name Frodo type Hobbit job None
    hmset user:3 name Gandalf type Maiar job Wizard
    hmset user:4 name Aragorn type Human job King
    hmset user:5 name Boromir type Human job Warrior
    
    # Set up the indexes: one set per value per field
    sadd name:Bilbo 1
    sadd name:Frodo 2
    sadd name:Gandalf 3
    sadd name:Aragorn 4
    sadd name:Boromir 5
    sadd type:Hobbit 1 2
    sadd type:Maiar 3
    sadd type:Human 4 5
    sadd job:None 1 2
    sadd job:Wizard 3
    sadd job:King 4
    sadd job:Warrior 5
    
    # Perform a query: we want the humans who happen to be a king
    # We just have to calculate the intersection of the corresponding sets
    sinterstore tmp type:Human job:King
    sort tmp by nosort get user:*->name get user:*->job get user:*->type
    1) "Aragorn"
    2) "King"
    3) "Human"
    

    노동 조합, 교차로, 차이를 결합하여 더 복잡한 쿼리를 구현할 수있다. 비 이산 값 또는 범위 기반 쿼리, 순서 집합 (ZSET)를 사용할 수있다 (통상 세트와 결합 될 수있다).

    이 방법은 매우 빠르게 값을 판별 충분하면 보통이다. 하지만 당신이 RDBMS의 유연성이없는 유의하시기 바랍니다 (더 정규 표현식은, 아니 접두사 검색 범위 쿼리, 처리하는 고통없는 등 ...)

  2. from https://stackoverflow.com/questions/10794142/porting-from-sqlite-to-redis by cc-by-sa and MIT license