Redis DB można zadeklarować jako pamięć podręczna komponent lub jako połączenie z bazą danych lub oba .
Kiedy jest zadeklarowany jako pamięć podręczna komponent (za pomocą yii/redis/cache ) jest dostępny w tym komponencie do przechowywania klucza/wartości pary, jak pokazano tutaj.
$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
);
Również inne komponenty mogą zacząć używać go do buforowania, np. session
jeśli jest skonfigurowany do tego lub jak yii\web\UrlManager, który domyślnie będzie próbował buforować wygenerowane reguły URL w dowolnym poprawnym mechanizmie buforowania zdefiniowanym w cache
pliku konfiguracyjnego komponent, jak wyjaśniono tutaj. W takim przypadku znalezienie przechowywanych danych innych niż Twoje jest więc normalne.
Gdy Redis jest zadeklarowany jako połączenie z bazą danych tak jak w linkach, które podałeś, co oznacza, że używając klasy yii\redis\Connection, możesz sprawić, by twój model rozszerzył swoją klasę \yii\redis\ActiveRecord jak każdy inny model ActiveRecord w Yii. Jedyną różnicą, jaką znam do tej pory, jest to, że musisz ręcznie zdefiniować swoje atrybuty, ponieważ nie ma schematu DB do przeanalizowania pod kątem baz danych NoSQL. Następnie zdefiniuj swoje zasady, scenariusze, relacje, zdarzenia, ... jak każdy inny 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() {...}
...
}
Wszystkie dostępne metody, w tym save()
, validate()
, getErrors()
, ... można znaleźć tutaj i należy go używać jak każdej innej klasy ActiveRecord, jak pokazano w oficjalnym przewodniku.