sql >> Base de Datos >  >> NoSQL >> Redis

Cómo configurar Yii2 con la configuración de Redis

En mi artículo anterior sobre Yii2, discutí cómo instalar y usar elasticsearch con Yii. En otro artículo, demostré las capacidades del marco Yii2 a través de una aplicación simple de tareas pendientes. Hoy demostraré cómo usar Redis como caché y controlador de sesión para Yii2. En mis artículos anteriores sobre Redis, analicé el uso de Redis como caché con sitios PHP personalizados y Redis para la administración de sesiones de PHP.

Para instalar Redis en Cloudways, consulte mi artículo vinculado anteriormente.

Paso 1:Instalación de la extensión Redis de Yii 2

Abra su compositor.json archivo y agregue la siguiente línea en sección requerida :

"yiisoft/yii2-redis": "~2.0.0"

Ahora en la consola, ejecuta el siguiente comando para instalar la extensión

composer update

Una vez que el compositor haya completado la instalación, abra Yii2 en el navegador. Abra la barra de depuración de Yii y localice las extensiones instaladas. Encontrará yii2-redis en la lista.

Esto significa que Redis se instaló correctamente y está listo para usarse.

Paso 2:Conexión de Redis con Yii2

A continuación, conecte la aplicación Yii2 con Redis. Dirígete a config carpeta y abra web.php. Agregue las siguientes líneas en los componentes sección.

       'redis'         => [

           'class'    => 'yii\redis\Connection',

           'hostname' => 'localhost',

           'port'     => 6379,

           'database' => 0,

       ],

       'session'       => [

           'class' => 'yii\redis\Session',

       ],

       'cache'         => [

           'class' => 'yii\redis\Cache',

        ],

Una vez hecho esto, guarde el archivo. Es hora de usar la extensión como controlador de sesión.

Paso 3:usar Redis como controlador de sesión con Yii2

Ahora abre tu carpeta de controladores y agregue un nuevo controlador en él. Llamémoslo RedisController.php. Ahora abra el archivo y coloque el siguiente código en él.

<?php

namespace app\controllers;

use Yii;

use yii\filters\AccessControl;

use yii\web\Controller;

use yii\filters\VerbFilter;

class RedisController extends Controller

{

   public function actionIndex()

   {

       Yii::$app->session->setFlash('contactFormSubmitted');

       $a = Yii::$app->session->getFlash('contactFormSubmitted');

       echo $a;

   }

}

Ahora ejecute este controlador en el navegador y verá la imagen a continuación una vez que se haya creado su sesión.

Ahora verifiquemos si esta sesión se agrega a la caché de redis . Abra el terminal SSH y escriba el siguiente comando para abrir redis cli.

redis-cli

En la línea de comando, escriba el siguiente comando para verificar si se ha agregado una nueva clave:

keys *

Si encuentra una clave alfanumérica en mix, esa clave es la clave de sesión. Esto indica que la sesión de Redis está funcionando correctamente.

Mantengamos esta ventana de la consola abierta para verificar la clave de caché más tarde.

Paso 4:usar Redis como controlador de caché con Yii2

Ahora abra el controlador que se creó anteriormente y agregue esta nueva función en él.

   public function actionCaches()

   {

       $cache = Yii::$app->cache;

       $key   = 'new';

       $data  = $cache->get($key);

       if ($data === false) {

           $key  = 'new';

           $data = 'A newly cache added';

           $cache->set($key, $data);

       }

       echo $data;

   }

Ejecutemos esta acción en el navegador. Obtendrá “Un nuevo caché agregado” como salida. Comprobemos si está guardado en Redis o no. Cambie a la consola que quedó abierta y escriba el siguiente comando:

keys *

Encontrarás tu nuevo clave de caché junto con la clave de sesión que se generó anteriormente.

Resumen:

Como puede ver, es fácil usar Redis con Yii2. simplemente instala la extensión y conecta Yii2 con ella. Luego puede usar la extensión como controlador de sesión y caché para su aplicación. Aquí está la lista completa de temas cubiertos en esta serie en Yii2. Si necesita hacer una pregunta sobre este artículo, deje un comentario.


No