복붙노트

[REDIS] 이것은 ServiceStack REST API에 대한 레디 스에 대한 좋은 유스 케이스인가?

REDIS

이것은 ServiceStack REST API에 대한 레디 스에 대한 좋은 유스 케이스인가?

나는 모바일 앱을 만드는거야 그것은 각 사용자에 대한 / 풋 정보를 얻을 수있는 API 서비스 백엔드를 필요로한다. 나는 ServiceStack의 웹 서비스를 개발해야 겠지만, 저장에 대해 궁금 해서요. 나는 레디 스 같은 빠른 메모리 캐싱 시스템의 아이디어를 사랑하지만, 나는 몇 가지 질문이있다 :

해결법

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

    1.1) 당신이 관계형 모델은 RDBMS에 대한 의미는 C # 컬렉션 클래스보다는하여 C # 프로그램 즉의 관계를 구조 할 방법에 대해 더 생각해야 레디 스에서 제대로 발전시키기 위해. 더 나은 사고 방식은 문서 데이터베이스와 같은 데이터 저장보다는 RDBMS 테이블에 대해 더 생각하는 것입니다. 당신이 당신의 차 실체가 무엇인지 작업을해야하므로 기본적으로 모든 키 (인덱스)를 통해 레디 스에서 blobbed됩니다 (즉, 집계 뿌리)  , 자신의 '키 네임 스페이스'또는 그것의 기본이 아닌 실체 여부를 유지 얻을 것이다 즉 단순히 메타 데이터 만 상위 엔티티와 지속 취득해야한다.

    1) 당신이 관계형 모델은 RDBMS에 대한 의미는 C # 컬렉션 클래스보다는하여 C # 프로그램 즉의 관계를 구조 할 방법에 대해 더 생각해야 레디 스에서 제대로 발전시키기 위해. 더 나은 사고 방식은 문서 데이터베이스와 같은 데이터 저장보다는 RDBMS 테이블에 대해 더 생각하는 것입니다. 당신이 당신의 차 실체가 무엇인지 작업을해야하므로 기본적으로 모든 키 (인덱스)를 통해 레디 스에서 blobbed됩니다 (즉, 집계 뿌리)  , 자신의 '키 네임 스페이스'또는 그것의 기본이 아닌 실체 여부를 유지 얻을 것이다 즉 단순히 메타 데이터 만 상위 엔티티와 지속 취득해야한다.

    여기 레디 스를 사용하여 간단한 블로그 애플리케이션을 만드는 과정 안내 좋은 기사입니다 :

    http://www.servicestack.net/docs/redis-client/designing-nosql-database

    또한 레디 스를 사용하여 다른 실제 예를 들어 RedisStackOverflow의 소스 코드를 볼 수 있습니다.

    기본적으로 당신은 가게에 필요 별도로 각 유형의 항목을 가져옵니다.

    var redisUsers = redis.As<User>();
    var user = redisUsers.GetById(1);
    var userIsWatching = redisUsers.GetRelatedEntities<Watching>(user.Id);
    

    당신은 개체 간의 관계를 저장하는 방법은 예컨대 레디 스의 설정, 사용하고있다 : 당신이 개념적으로 / 당직자 관계를 사용자를 저장할 수 있습니다 :

    SET["ids:User>Watcher:{UserId}"] = [{watcherId1},{watcherId2},...]
    

    레디 스 세트에 ID를 저장하는 것은 멱등 즉 동일한 세트를 여러 번에 watcherId1을 추가 할 수 있으며 그것은 오직 그것의 하나 명의 발생을 것입니다. 당신이 이제까지 관계의 존재를 확인 할 필요가 없습니다 의미가 존재하지 않을 것 같은 자유롭게 관련 ID를 계속 추가 할 수 있기 때문에 좋은 것입니다.

    관련 : 작성하거나 레디 스 모음 같은 빈 컬렉션에 쓰기로이다 존재하지 않습니다 (예 : 목록)에 읽기, 즉 목록은 당신이 비를 액세스하는 동안 목록에 항목을 추가 할 때이 즉석에서 작성되는 존재하지 않는 목록은 단순히 0 결과를 반환합니다. 이것은 당신이 그들을 사용하기 위해 앞까지 당신의 스키마를 정의 할 필요가 없기 때문에 마찰이없는 및 생산성 승리. 당신은 레디 스 필요합니다 있지만이 키가 또는 TYPE 작업이 유형을 확인할 수 있도록 여부를 확인하는 작업을 EXISTS 제공합니다.

    기억해야 할 한 가지 레디 스에서 암시 인덱스가 없기 때문에, 당신은 일반적으로 설치에 쓰기 동안 자신을 읽기 위해 필요한 당신의 인덱스 / 관계가 필요하다. 기본적으로 당신은 앞까지의 모든 쿼리 요구 사항에 대해 생각하고 쓰기시 필요한 관계를 설정 확인해야합니다. 위의 RedisStackOverflow 소스 코드는 프로그램이 좋은 예입니다.

    참고 : ServiceStack.Redis C #을 제공 당신은 그것의 기본 키 아이디이라는 고유 한 필드가 가정합니다. 당신은 ModelConfig.Id () 설정 매핑과 다른 필드를 사용하도록 구성 할 수 있습니다.

    2) 레디 스는 아웃 - 오브 - 박스 RDB와 추가] 전용 파일 (AOF) 모드 지속성이 개 유형을 지원합니다. 나는 응용 프로그램 요구 사항을 각각 무엇으로 편안 때까지 모두를 추가하고 무엇을하는 것이 좋습니다 - 추가] 전용 파일 인 - 사이 스냅 샷 모든 변경 사항을 기록 트랜잭션 저널 같은 역할을하는 동안 RDB 일상 스냅 샷을 작성합니다. 당신은 http://redis.io/topics/persistence 전혀 레디 스 지속성을 읽을 수 있습니다.

    http://redis.io/topics/replication : 참고 레디 스도 사소한 복제 당신이 더 많은 약 읽을 수 있습니다 지원

    레디 스 메모리에 주로 운영하고 있기 때문에 3) 가장 중요한 자원은 메모리 +는 디스크에 스냅 샷을 할 때의 버퍼에 전체 데이터 집합을 저장할 수있는 충분한 RAM을 가지고있다. 레디 스 너무도 작은 AWS 인스턴스가 부하를 많이 처리 할 수있을 것입니다 매우 효율적입니다 - 당신이 충분한 RAM을 데를 찾기 위해 원하는 것을.

    마지막으로 당신이 ServiceStack C # 레디 스 클라이언트를 사용하는 경우 나는 당신의 엔티티의 좋은 시각적 인 뷰를 제공하는 레디 스 관리 UI를 설치하는 것이 좋습니다. 당신은 그것의 라이브 데모를 볼 수 있습니다 http://servicestack.net/RedisAdminUI/AjaxClient/

  2. from https://stackoverflow.com/questions/8332622/is-this-a-good-use-case-for-redis-on-a-servicestack-rest-api by cc-by-sa and MIT license