복붙노트

[REDIS] 레디 스 그냥 캐시인가?

REDIS

레디 스 그냥 캐시인가?

좀 레디 스의 문서를 읽고 http://try.redis-db.com/에서 자습서를 시도하고있다. 지금까지, 나는 레디 스 및 속도 또는 엔터프라이즈 라이브러리 캐싱 프레임 워크와 같은 캐싱 기술의 차이를 볼 수 없습니다

당신은 효과적으로 단지 고유 키를 사용하여 메모리 데이터 저장소에 객체를 추가하고 있습니다. 관계형 의미가 될 것 같지 않습니다 ...

나는 무엇을 놓치고?

해결법

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

    1.아니, 레디 스는 캐시보다 훨씬 더.

    아니, 레디 스는 캐시보다 훨씬 더.

    캐시, 레디 스 저장 키 = 값 쌍처럼. 그러나 캐시는 달리, 레디 스 당신이 값에서 작동 할 수 있습니다. 문자열, 세트, ​​해시, 목록 및 정렬 된 세트 - 레디 스 5 개 데이터 유형이있다. 각 데이터 유형은 다양한 작업을 제공합니다.

    레디 스를 이해하는 가장 좋은 방법은 당신이 데이터베이스에 저장하려고하는 방법에 대해 생각하지 않고 응용 프로그램을 모델링하는 것입니다.

    우리는 StackOverflow.com를 구축하고 싶은 말은 수 있습니다. 간단하게하기 위해, 우리는 질문, 답변, 태그 및 사용자가 필요합니다.

    각 객체는지도로 모델링 할 수있다. 예를 들어, 질문은 필드 맵 {asked_by date_asked ID, 제목, 표, 상태}입니다. 마찬가지로, 답변 필드 {아이디, question_id, ANSWER_TEXT, answered_by, 투표, 상태}와지도입니다. 마찬가지로, 우리는 사용자 개체를 모델링 할 수 있습니다.

    이러한 개체의 각 직접 해시로 레디 스에 저장할 수 있습니다. 고유 ID를 생성하려면, 당신은 원자 증가 명령을 사용할 수 있습니다. 이 같은 -

    $ HINCRBY unique_ids question 1
    (integer) 1
    $ HMSET question:1 title "Is Redis just a cache?" asked_by 12 votes 0
    OK
    
    $ HINCRBY unique_ids answer 1
    (integer) 1
    $ HMSET answer:1 question_id 1 answer_text "No, its a lot more" answered_by 15 votes 1
    OK
    

    이제 매번 누군가가 질문 upvotes 또는 대답은, 당신은이 작업을 수행 할 필요가

    $ HINCRBY question:1 votes 1
    (integer) 1
    $ HINCRBY question:1 votes 1
    (integer) 2
    

    다음으로, 우리는 홈 페이지에 표시 할 가장 최근의 질문에 저장할. 당신은 .NET 또는 Java 프로그램을 작성한다면, 당신은 목록에서 질문을 저장하는 것입니다. 뿐만 아니라 레디 스에이를 저장하는 가장 좋은 방법입니다, 밝혀졌습니다.

    때마다 누군가가 우리가 목록에 해당 ID를 추가 질문을.

    $ lpush questions question:1
    (integer) 1
    $ lpush questions question:2
    (integer) 1
    

    당신이 당신의 홈 페이지를 렌더링 할 때 지금, 당신은 가장 최근의 25 개 질문 레디 스를 부탁드립니다.

    $ lrange questions 0 24
    1) "question:100"
    2) "question:99"
    3) "question:98"
    4) "question:97"
    5) "question:96"
    ...
    25) "question:76"
    

    이제 ID를 가지고, 파이프 라인을 사용하여 레디 스에서 항목을 검색하고이 사용자에게 보여줍니다.

    다음으로, 우리는 각 태그에 대한 질문을 검색 할 수 있습니다. 그러나 SO는 상단이 각 태그 아래 질문에, 새로운 질문이나 대답없는 질문은 투표를 볼 수 있습니다.

    이 모델링하기 위해, 우리는 레디 스 '소트 세트의 기능을 사용합니다. 정렬 된 세트는 각 요소 점수를 연결할 수 있습니다. 그런 다음 자신의 점수에 따라 요소를 검색 할 수 있습니다.

    계속 진행하여 레디 스 태그에이 작업을 수행 할 수 있습니다

    $ zadd questions_by_votes_tagged:redis 2 question:1 
    (integer) 1
    $ zadd questions_by_votes_tagged:redis 10 question:2 
    (integer) 1
    $ zadd questions_by_votes_tagged:redis 5 question:613 
    (integer) 1
    $ zrange questions_by_votes_tagged:redis 0 5 
    1) "question:1"
    2) "question:613"
    3) "question:2"
    $ zrevrange questions_by_votes_tagged:redis 0 5 
    1) "question:2"
    2) "question:613"
    3) "question:1"
    

    우리는 무슨 이상 했는가? 우리는 소트 세트에 질문을 추가하고, 각 질문에 대한 점수 (투표 수) 관련. 질문 upvoted됩니다 때마다, 우리는 점수를 증가합니다. 사용자가 클릭 "질문 표에 의해 분류 레디 스를 태그"때, 우리는 단지 zrevrange을 상단 질문을 다시 얻을.

    그리고 마지막으로, 보너스 기능입니다. 당신이 질문 페이지가 열려 유지하는 경우 새로운 질문을 추가 할 때, SO 당신을 통지합니다. 어떻게 레디 스의 도움을 통해 여기 수 있습니까?

    레디 스 술집 서브 모델이있다. 당신은 예를 들어, "channel_questions_tagged_redis"채널을 만들 수 있습니다. 그런 다음 특정 채널에 사용자를 구독. 새로운 질문을 추가 할 때, 당신은 그 채널에 메시지를 게시 할 것입니다. 모든 사용자는 다음 메시지를 얻을 것입니다. 당신은 실제로 브라우저에 메시지를 전달하기 위해 웹 소켓이나 혜성 같은 웹 기술을 사용해야하지만 레디 스 모두 사용하여 서버 측의 배관을하는 데 도움이됩니다.

    캐시는 달리, 레디 스 하드 디스크의 데이터를 지속. 당신은 더 나은 안정성을 제공하는 마스터 - 슬레이브 설정을 할 수 있습니다. 더 많은 내용을 통해 여기 지속성 및 복제 주제를 통해 이동 - http://redis.io/documentation

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

    2.레디 스 초고속 루아 - 스크립트와 같은 독특한 능력을 가지고있다. 그것의 실행 시간은 C 명령 실행에 같습니다. 이것은 또한 잠금 및 세마포 같은 작업 많은 고급 개체에 필요한 정교한 레디 스 데이터 조작에 대한 자성을 제공합니다.

    레디 스 초고속 루아 - 스크립트와 같은 독특한 능력을 가지고있다. 그것의 실행 시간은 C 명령 실행에 같습니다. 이것은 또한 잠금 및 세마포 같은 작업 많은 고급 개체에 필요한 정교한 레디 스 데이터 조작에 대한 자성을 제공합니다.

    쉽게 자바에 분산 응용 프로그램을 구축 할 수 있습니다 Redisson라는 메모리 데이터 그리드에 본사를 둔 레디 스가있다. 분산 잠금, 세마포어,하는 ReadWriteLock, CountDownLatch를, 인 ConcurrentMap 객체 및 많은 다른 사람에게 감사드립니다.

    완벽 클라우드에서 작동하고 AWS Elasticache, AWS Elasticache 클러스터 및 푸른 레디 스 캐시 지원을 지원합니다

  3. ==============================

    3.다만 캐시.

    다만 캐시.

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

    4.실제로 상대적 데이터 표현 (또는 데이터 표현의 어떤 유형) 및 데이터베이스 역할 간의 의존성 (캐시 영구 지속성 등)이 없다.

    실제로 상대적 데이터 표현 (또는 데이터 표현의 어떤 유형) 및 데이터베이스 역할 간의 의존성 (캐시 영구 지속성 등)이 없다.

    레디 스는 사실 캐시에 대한 좋은,하지만 훨씬 더 그럼 그냥 캐시입니다. 그것은 완전히 메모리 데이터베이스 고속입니다. 그것은 디스크에 데이터를 유지한다. 그것은 그것의 키 - 값 저장, 관계형 아니다.

    우리는 생산에 사용. 레디 스 빌드 소프트웨어에 도움이 그 모든 자연의 라이프 사이클 중 두 번째와 킵 고객 비즈니스 데이터 당 요청 핸들의 수천.

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

    5.레디 스 가장 분산 환경 / Microservice 아키텍처에 적합한 캐시입니다.

    레디 스 가장 분산 환경 / Microservice 아키텍처에 적합한 캐시입니다.

    또한, 자성 빠르고 신뢰성과 일관성을 제공하고, 같은 데이터 유형 세트, 해시,리스트 등의 범위를 갖는다

    나는 마지막 년에서 그것을 사용하고 당신은 매우 빠른 및 성능 관련 문제는 항상 캐시 데이터를 사용할 수있는 생산 준비 솔루션을 제공 할 필요 할 때 정말 구세주로 제공됩니다.

  6. ==============================

    6.캐시 서버되고 게다가, 레디 스 구체적 데이터 구조 서버이다. 데이터 구조가 프로그램 또는 응용 프로그램의 기본이기 때문에 데이터 구조 서버의 형태로 캐시가된다는 것은, 많은 것을 의미한다. 당신은 목록, 해시 맵, 같은 순위를 설정하거나 물건을 구성 할 스토리지 기술 및 필요에 따라 SQL 데이터베이스를 사용하는 고려, 그것은 종류의 목에 통증입니다. 레디 스 따라서 높은 개발을 단순화, 아주 간단한 방법으로 직접 당신에게 이러한 기능을 제공 할 수 있습니다.

    캐시 서버되고 게다가, 레디 스 구체적 데이터 구조 서버이다. 데이터 구조가 프로그램 또는 응용 프로그램의 기본이기 때문에 데이터 구조 서버의 형태로 캐시가된다는 것은, 많은 것을 의미한다. 당신은 목록, 해시 맵, 같은 순위를 설정하거나 물건을 구성 할 스토리지 기술 및 필요에 따라 SQL 데이터베이스를 사용하는 고려, 그것은 종류의 목에 통증입니다. 레디 스 따라서 높은 개발을 단순화, 아주 간단한 방법으로 직접 당신에게 이러한 기능을 제공 할 수 있습니다.

    다른 한편으로, 데이터 구조 서버는 캐시의 형태 일 필요는 없습니다. 이 레디 스와 호환 프로젝트가 있지만 영구 저장 엔진을 가지고있다.

  7. from https://stackoverflow.com/questions/10137857/is-redis-just-a-cache by cc-by-sa and MIT license