Redis DB lze deklarovat jako cache komponentu nebo jako databázové připojení nebo obě .
Když je deklarován jako mezipaměť komponenta (pomocí yii/redis/cache ) je v rámci této komponenty přístupný pro uložení klíč/hodnota párů, jak je uvedeno zde.
$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
);
Také další komponenty jej mohou začít používat pro návrhy ukládání do mezipaměti, jako je session
pokud je tak nakonfigurován nebo jako yii\web\UrlManager, který se ve výchozím nastavení pokusí uložit vygenerovaná pravidla URL do mezipaměti v jakémkoli platném mechanismu mezipaměti definovaném v cache
konfiguračního souboru komponent, jak je vysvětleno zde. Je tedy normální, že v takovém případě najdete nějaká uložená data jiná než vaše.
Když je Redis deklarován jako DB připojení jako v odkazech, které jste poskytli, což znamená, že pomocí třídy yii\redis\Connection můžete vytvořit svůj model rozšiřující svou třídu \yii\redis\ActiveRecord jako jakýkoli jiný model ActiveRecord v Yii. Jediný rozdíl, který zatím znám, je ten, že své atributy musíte definovat ručně, protože neexistuje žádné schéma DB, které by bylo možné analyzovat pro databáze NoSQL. Pak stačí definovat pravidla, scénáře, vztahy, události, ... jako jakýkoli jiný model 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() {...}
...
}
Všechny dostupné metody včetně save()
, validate()
, getErrors()
, ... lze nalézt zde a měl by být používán jako jakákoli jiná třída ActiveRecord, jak je uvedeno v oficiální příručce.