sql >> データベース >  >> NoSQL >> Redis

Yii2+データベースとしてのRedis

    RedisDBはキャッシュとして宣言できます コンポーネントまたはデータベース接続として または両方

    キャッシュとして宣言された場合 コンポーネント( yii / redis/cacheを使用 )そのコンポーネント内でアクセスして、キー/値を保存できます。 ここに示すようにペア。

    $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
    );
    

    また、他のコンポーネントがsessionのような提案をキャッシュするためにそれを使用し始めるかもしれません そうするように構成されている場合、またはyii \ web \ UrlManagerのように構成されている場合、デフォルトでは、構成ファイルのcacheで定義されている有効なキャッシュメカニズムで生成されたURLルールをキャッシュしようとします。 ここで説明するコンポーネント。したがって、その場合、自分以外の保存データを見つけるのが普通です。

    RedisがDB接続として宣言されている場合 提供したリンクのように、yii \ redis \ Connectionクラスを使用すると、Yiiの他のActiveRecordモデルと同じようにモデルを\ yii \ redis\ActiveRecordクラスに拡張できます。私がこれまでに知っている唯一の違いは、NoSQLデータベースを解析するDBスキーマがないため、属性を手動で定義する必要があることです。次に、ルール、シナリオ、リレーション、イベントなどを他のActiveRecordモデルと同じように定義します。

    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() {...}
        ...
    }
    

    save()を含むすべての利用可能なメソッド 、validate()getErrors() 、...はここにあり、公式ガイドに示されている他のActiveRecordクラスと同じように使用する必要があります。




    1. Meteorの平均集計クエリ

    2. キー名のMongoDBドット(。)

    3. どうすればFlaskでMongoDBを使用できますか?

    4. DigitalOceanでのMongoDBの実行