Es spielt keine Rolle, welche DB zu verwenden ist. Es geht darum, sie zu implementieren. Yü haben diese beiden Komponenten in der Konfigurationsdatei setzen:
Die gute Sache über MongoDB und Redis ist, dass beide können als Datenbankverbindung oder als Cache-Komponente verwendet werden. Sie können diese Konfigurationen zum Beispiel haben:
'components' => [
'db' => [
'class' => '\yii\mongodb\Connection',
'dsn' => 'mongodb://developer:[email protected]:27017/mydatabase',
],
'cache' => [
'class' => 'yii\redis\Cache',
'redis' => [
'hostname' => 'localhost',
'port' => 6379,
'database' => 0,
]
],
],
Hier, während MongoDB als Standard-Datenbank gesetzt ist, wird Redis nur als Cache-Komponente verwendet, und weil alle Cache-Komponenten mit der gleichen Basisklasse yii\caching\Cache sie unterstützen nur those APIs. Was sollte in Ordnung sein, wenn Sie es nur zum Caching verwenden.
Überprüfen Sie die Yii2 Caching Guide, um alles zu sehen, was Sie mit einer Cache-Komponente tun können. Ein kurzes Beispiel dessen, was Sie zu tun versuchen, kann innerhalb von @Blizz answer here gesehen werden, wo er eine SQL-Abfrage als eine Abhängigkeit gesetzt hat, um zu überprüfen, ob zwischengespeicherte Daten stattdessen verwendet oder ungültig gemacht werden sollten.
Im Fall, dass Sie mehr die Redis-Datenbank verwenden, als nur das Caching dann können Sie stattdessen diese configs haben:
'components' => [
'mongodb' => [
'class' => '\yii\mongodb\Connection',
'dsn' => 'mongodb://developer:[email protected]:27017/mydatabase',
],
'redis' => [
'class' => 'yii\redis\Connection',
'hostname' => 'localhost',
'port' => 6379,
'database' => 0,
],
'cache' => [
'class' => 'yii\redis\Cache',
'redis' => 'redis' // id of the connection application component
],
],
Hier definiert wir zwei Datenbanken und ausgewählte von ihnen auch als Cache verwendet werden Komponente. Es sollte genau so funktionieren, außer dass Sie die Redis-Datenbank in Ihrer App auch als Redis ActiveRecord oder Redis ActiveQuery Klasse verwenden können. Sie müssen nur festlegen, welche DB in jedem Modell Klasse verwendet werden soll, wie es in this example getan wird.