sql >> Database >  >> NoSQL >> Redis

Yii2 + Redis als database

Redis DB kan worden gedeclareerd als een cache component of als een databaseverbinding of beide .

Wanneer het wordt gedeclareerd als een cache component (met behulp van de yii/redis/cache ) het is toegankelijk binnen die component om sleutel/waarde op te slaan paren zoals hier getoond.

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

Ook andere componenten kunnen het gaan gebruiken voor caching-voorstellen zoals session indien geconfigureerd om dit te doen of zoals de yii\web\UrlManager die standaard zal proberen de gegenereerde URL-regels in de cache op te slaan in elk geldig cachingmechanisme dat is gedefinieerd in de cache van het configuratiebestand onderdeel zoals hier uitgelegd. Het is dus normaal om in dat geval andere opgeslagen gegevens dan de uwe te vinden.

Wanneer Redis is gedeclareerd als een DB-verbinding zoals in de links die je hebt gegeven, wat betekent dat je met behulp van de yii\redis\Connection-klasse je model de \yii\redis\ActiveRecord-klasse kunt laten uitbreiden als elk ander ActiveRecord-model in Yii. Het enige verschil dat ik tot nu toe weet, is dat je je attributen handmatig moet definiëren, omdat er geen DB-schema is om te ontleden voor NoSQL-databases. Definieer dan gewoon uw regels, scenario's, relaties, gebeurtenissen, ... zoals elk ander ActiveRecord-model:

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 beschikbare methoden inclusief save() , validate() , getErrors() , ... kan hier worden gevonden en moet worden gebruikt zoals elke andere ActiveRecord-klasse, zoals weergegeven in de officiële gids.




  1. Servicestack Redis-lijst bijwerken

  2. MongoDB-replicasets in verschillende regio's implementeren op AWS

  3. Mongoexport met behulp van $gt- en $lt-beperkingen voor een datumbereik

  4. MongoDB index intersectie