Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Yii2 + Redis als Datenbank

Redis DB kann als Cache deklariert werden Komponente oder als Datenbankverbindung oder beides .

Wenn es als Cache deklariert ist Komponente (unter Verwendung von yii/redis/cache ) ist es innerhalb dieser Komponente zugänglich, um Schlüssel/Wert zu speichern Paare wie hier gezeigt.

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

Auch andere Komponenten können damit beginnen, es für Caching-Vorschläge wie session zu verwenden wenn er dafür konfiguriert ist oder wie der yii\web\UrlManager, der standardmäßig versucht, die generierten URL-Regeln in einem beliebigen gültigen Caching-Mechanismus zwischenzuspeichern, der unter cache der Konfigurationsdatei definiert ist Komponente wie hier erklärt. Daher ist es normal, dass Sie in diesem Fall einige gespeicherte Daten finden, die nicht Ihre eigenen sind.

Wenn Redis als DB-Verbindung deklariert ist wie in den Links, die Sie bereitgestellt haben, was bedeutet, dass Sie mit der Klasse yii\redis\Connection Ihr Modell dazu bringen können, seine \yii\redis\ActiveRecord-Klasse wie jedes andere ActiveRecord-Modell in Yii zu erweitern. Der einzige Unterschied, den ich bisher kenne, besteht darin, dass Sie Ihre Attribute manuell definieren müssen, da es kein DB-Schema zum Analysieren für NoSQL-Datenbanken gibt. Dann definieren Sie einfach Ihre Regeln, Szenarien, Beziehungen, Ereignisse, ... wie jedes andere ActiveRecord-Modell:

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

Alle verfügbaren Methoden einschließlich save() , validate() , getErrors() , ... finden Sie hier und sollten wie jede andere ActiveRecord-Klasse verwendet werden, wie im offiziellen Handbuch gezeigt.