Redis
 sql >> Base de données >  >> NoSQL >> Redis

Yii2 + Redis comme base de données

Redis DB peut être déclaré en tant que cache composant ou en tant que connexion de base de données ou les deux .

Lorsqu'il est déclaré comme cache composant (en utilisant le yii/redis/cache ) il est accessible dans ce composant pour stocker clé/valeur paires comme indiqué ici.

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

D'autres composants peuvent également commencer à l'utiliser pour la mise en cache propose comme session s'il est configuré pour le faire ou comme le yii\web\UrlManager qui par défaut essaiera de mettre en cache les règles d'URL générées dans n'importe quel mécanisme de mise en cache valide défini sous le cache du fichier de configuration composant comme expliqué ici. Il est donc normal de trouver des données stockées autres que les vôtres dans ce cas.

Lorsque Redis est déclaré en tant que connexion DB comme dans les liens que vous avez fournis, ce qui signifie qu'en utilisant la classe yii\redis\Connection, vous pouvez faire en sorte que votre modèle étende sa classe \yii\redis\ActiveRecord comme tout autre modèle ActiveRecord dans Yii. La seule différence que je connaisse jusqu'à présent est que vous devez définir vos attributs manuellement car il n'y a pas de schéma de base de données à analyser pour les bases de données NoSQL. Ensuite, définissez simplement vos règles, scénarios, relations, événements, ... comme n'importe quel autre modèle 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() {...}
    ...
}

Toutes les méthodes disponibles, y compris save() , validate() , getErrors() , ... peuvent être trouvés ici et doivent être utilisés comme n'importe quelle autre classe ActiveRecord, comme indiqué dans le guide officiel.