sql >> Databasteknik >  >> NoSQL >> Redis

Yii2 + Redis som databas

Redis DB kan deklareras som en cache komponent eller som en databasanslutning eller båda .

När den deklareras som en cache komponent (med yii/redis/cache ) den är tillgänglig inom den komponenten för att lagra nyckel/värde par som visas här.

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

Även andra komponenter kan börja använda den för cachning av förslag som session om den är konfigurerad för att göra det eller gillar yii\web\UrlManager som som standard försöker cachelagra de genererade URL-reglerna i vilken giltig cachningsmekanism som än definieras under konfigurationsfilens cache komponent som förklaras här. Så det är normalt att hitta annan lagrad data än din i så fall.

När Redis deklareras som en DB-anslutning som i länkarna du angav, vilket innebär att du använder klassen yii\redis\Connection kan göra att din modell utökar dess \yii\redis\ActiveRecord-klass som vilken annan ActiveRecord-modell som helst i Yii. Den enda skillnaden jag vet hittills är att du måste definiera dina attribut manuellt eftersom det inte finns något DB-schema att analysera för NoSQL-databaser. Sedan är det bara att definiera dina regler, scenarier, relationer, händelser, ... som alla andra ActiveRecord-modeller:

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

Alla tillgängliga metoder inklusive save() , validate() , getErrors() , ... kan hittas här och bör användas som alla andra ActiveRecord-klasser som visas i den officiella guiden.




  1. MongoDb C# GeoNear Query Construction

  2. Hantering av övergående nätverksfel med StackExchange.Redis

  3. Hur man skriver fackliga frågor i mongoDB

  4. Node.js Redis Connection Pooling