Redis
 sql >> база данни >  >> NoSQL >> Redis

Yii2 + Redis като база данни

Redis DB може да бъде деклариран като кеш компонент или като връзка с база данни или и двете .

Когато е деклариран като кеш компонент (с помощта на 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, който по подразбиране ще се опитва да кешира генерираните URL правила във всеки валиден механизъм за кеширане, дефиниран в cache на конфигурационния файл компонент, както е обяснено тук. Така че в този случай е нормално да намерите някои съхранени данни, различни от вашите.

Когато Redis е деклариран като DB връзка както в предоставените от вас връзки, което означава, че с помощта на класа yii\redis\Connection можете да направите своя модел да разшири своя клас \yii\redis\ActiveRecord като всеки друг модел ActiveRecord в Yii. Единствената разлика, която знам досега, е, че трябва да дефинирате атрибутите си ръчно, тъй като няма DB схема за анализиране за NoSQL бази данни. След това просто дефинирайте вашите правила, сценарии, отношения, събития, ... като всеки друг модел на 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Изпълнение на пакети от команди с помощта на redis cli

  2. Как *правилно* запитвате Redis от Tornado?

  3. Redis и Memcache или просто Redis?

  4. Redis свързва ECONNREFUSED в NodeJS в клъстер Kubernetes

  5. Въведение в Redis Data Structures:Набори