Redis DB kan erklæres som en cache komponent eller som en databaseforbindelse eller begge .
Når det er erklæret som en cache komponent (ved hjælp af yii/redis/cache ) den er tilgængelig inden for den komponent til at gemme nøgle/værdi par som vist her.
$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
);
Også andre komponenter kan begynde at bruge det til caching af forslag som session
hvis den er konfigureret til at gøre det eller kan lide yii\web\UrlManager, som som standard vil forsøge at cache de genererede URL-regler i en hvilken som helst gyldig cachemekanisme defineret under konfigurationsfilens cache
komponent som forklaret her. Så det er normalt at finde nogle andre lagrede data end dine i så fald.
Når Redis er erklæret som en DB-forbindelse ligesom i de links, du angav, hvilket betyder, at du ved at bruge yii\redis\Connection-klassen kan få din model til at udvide dens \yii\redis\ActiveRecord-klasse som enhver anden ActiveRecord-model i Yii. Den eneste forskel, jeg kender indtil videre, er, at du skal definere dine attributter manuelt, da der ikke er noget DB-skema til at parse for NoSQL-databaser. Så skal du bare definere dine regler, scenarier, relationer, begivenheder, ... som enhver anden 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 tilgængelige metoder inklusive save()
, validate()
, getErrors()
, ... kunne findes her og bør bruges som enhver anden ActiveRecord-klasse som vist i den officielle guide.