Paso 31: Utilizando Redis para almacenar sesiones

5.2 version
Maintained

Utilizando Redis para almacenar sesiones

Según el tráfico del sitio web y/o su infraestructura, es posible que desees utilizar Redis para administrar las sesiones de usuario en lugar de PostgreSQL.

Cuando hablamos de bifurcar el código del proyecto para mover la sesión del sistema de archivos a la base de datos, enumeramos todos los pasos necesarios para agregar un nuevo servicio.

Así es como puedes agregar Redis a tu proyecto en un parche:

patch_file
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
--- a/.symfony.cloud.yaml
+++ b/.symfony.cloud.yaml
@@ -4,6 +4,7 @@ type: php:7.4

 runtime:
     extensions:
+        - redis
         - blackfire
         - xsl
         - pdo_pgsql
@@ -26,6 +27,7 @@ disk: 512

 relationships:
     database: "db:postgresql"
+    redis: "rediscache:redis"

 web:
     locations:
--- a/.symfony/services.yaml
+++ b/.symfony/services.yaml
@@ -15,3 +15,6 @@ varnish:
 files:
     type: network-storage:1.0
     disk: 256
+
+rediscache:
+    type: redis:5.0
--- a/config/packages/framework.yaml
+++ b/config/packages/framework.yaml
@@ -7,7 +7,7 @@ framework:
     # Enables session support. Note that the session will ONLY be started if you read or write from it.
     # Remove or comment this section to explicitly disable session support.
     session:
-        handler_id: '%env(DATABASE_URL)%'
+        handler_id: '%env(REDIS_URL)%'
         cookie_secure: auto
         cookie_samesite: lax

--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -17,3 +17,7 @@ services:
         image: blackfire/blackfire
         env_file: .env.local
         ports: [8707]
+
+    redis:
+        image: redis:5-alpine
+        ports: [6379]

¿No es hermoso?

«Reinicia» Docker para iniciar el servicio Redis:

1
2
$ docker-compose stop
$ docker-compose up -d

Prueba localmente navegando por el sitio web; todo debería seguir funcionando como antes.

Confirma y despliegua como de costumbre:

1
$ symfony deploy

  • « Previous Paso 30: Descubriendo el corazón de Symfony
  • Next » Paso 32: Usando RabbitMQ como agente de mensajes

This work, including the code samples, is licensed under a Creative Commons BY-NC-SA 4.0 license.