복붙노트

[REDIS] 데이터베이스로 Yii2 + 레디 스

REDIS

데이터베이스로 Yii2 + 레디 스

나는 Yii2를 사용하려는 데이터베이스로 레디 스.

지금까지 나는 여기에서 Yii2에 대한 레디 스 액티브 클래스를 얻었다.

링크 1

링크 2

그러나, 나는 문제가있어. 왜이 클래스 ADDS 아무것도 해시 레디 스 ????

나는 그것이 데이터를 삽입하는 패턴을 찾을 수 없습니다 것을 위. 나는 한 명의 사용자를 추가하고 사용자에서 사용자 추가합니다 : XXX 네임 스페이스와의에서 다른 레코드 : 사용자 : XXX 등을에 있지만, 주제의 아무도 내가 속성에 정의 된 모든 필드가 없습니다! ID 만 포함되어 있습니다.

나는 키 - 값 형식의 데이터베이스와 RDBMS가 다른도 레디 스의 레코드와 같은 관계를 구현할 수있는 방법을 알고 있다는 것을 알고 있지만 왜이 것 ID 만 저장 모른다.

지금까지 레디 스의 ActiveRecords를 사용의 예를 찾을 수 없습니다.

여기이 아니 충분 하나 있습니다.

그래서 여기 내 주요 질문은 : 어떻게 YII2에서 활동 기록 및 다른 데이터 유형을 사용하여 레디 스에 데이터를 추가 할 수 있습니까?

그리고 그것은 활동 기록으로 불가능하다면 최선의 해결책은 무엇인가? 이 경우

또 다른 질문 : 그것은 가능한 것은 대신 모델을 사용하고 내 자신의 모델을 쓰기 : () 메소드에 저장하기? 이 속도로 최고의 데이터 유효성 검사 솔루션은 무엇인가?

사실 나는이 과정을하고 레디 스에 결과를 저장하고, 마지막으로 RabitMQ을 통해 사용자에게 응답을 보내, 내가 메시지를 얻을 RabitMQ에 보내와 작업자의 데이터를 받아야하므로, 전보 로봇을 만들고 싶어.

내가 목록을 검증와 과정 인증을 많이 할 저장하고 선택하고 범위와 세트로 저장해야하고 그래서 이것 저것 ....

나는 모델 또는 활성 레코드 또는 검증에 적절한 솔루션을 저장하고 레디 스 및 Yii2에 대한 데이터를 검색 할 수있는 좋은 방법을 원한다.

해결법

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

    1.레디 스 DB는 캐시 구성 요소 또는 데이터베이스 연결 또는 둘 모두로 선언 할 수 있습니다.

    레디 스 DB는 캐시 구성 요소 또는 데이터베이스 연결 또는 둘 모두로 선언 할 수 있습니다.

    이 캐시 컴포넌트로서 선언 될 때 (사용 YII / 레디 스 / 캐시) 여기서 도시 된 바와 같이 그 저장소 키 / 값 쌍으로하는 구성 요소 내에 접근 할 수있다.

    $cache = Yii::$app->cache;
    
    // try retrieving $data from cache
    $data = $cache->get($key);
    // store $data in cache so that it can be retrieved next time
    $cache->set($key, $data);
    
    // one more example:
    $access_token = Yii::$app->security->generateRandomString();
    $cache->add(
        // key
        $access_token, 
        // data (can also be an array)
        [
            'id' => Yii::$app->user->identity->id
            'name' => Yii::$app->user->identity->name
        ], 
        // expires
        60*60*3
    );
    

    또한 다른 구성 요소가 이렇게 구성된 경우 캐싱 세션과 같은 제안을 위해 그것을 사용하여 시작하거나 기본적으로 설정 파일의 캐시 구성 요소에서 정의 된대로 유효한 캐싱 메커니즘에서 생성 된 URL 규칙을 캐시하려고합니다 YII \ 웹 \ UrlManager 같은 설명으로 할 수있다 여기. 그래서이 경우에 당신 이외의 저장된 데이터를 찾기 위해 정상입니다.

    링크에서 같은 DB 연결을 사용하면 YII \ 레디 스 \ 연결 클래스를 사용하는 수단을 제공 한 레디 스를 선언 할 때 당신은 당신의 모델을 확장 할 수는 \ YII \ 레디 스 \ 액티브 클래스 YII의 다른 액티브 모델로. 내가 지금까지 알고있는 유일한 차이점은없는 NoSQL 데이터베이스에 대한 구문 분석 할 DB 스키마가 없기 때문에 수동으로 속성을 정의 할 필요가 있다는 것입니다. 그럼 그냥 규칙, 시나리오, 관계, 이벤트를 정의, ... 다른 액티브 모델로 :

    class Customer extends \yii\redis\ActiveRecord
    {
        public function attributes()
        {
            return ['id', 'name', 'address', 'registration_date'];
        }
    
        public function rules()
        {
            return [
                ['name', 'required'],
                ['name', 'string', 'min' => 3, 'max' => 12, 'on' => 'register'],
                ...
            ];
        }
    
        public function attributeLabels() {...}
        ...
    }
    

    저장을 포함한 모든 가능한 방법 ()의 validate (), getErrors () ... 여기에서 볼 수 있습니다 공식 가이드와 같이 다른 액티브 클래스처럼 사용할 수 있습니다.

  2. from https://stackoverflow.com/questions/41592402/yii2-redis-as-database by cc-by-sa and MIT license