Etap 31: Używanie Redisa do przechowywania sesji

5.2 version
Maintained

Używanie Redisa do przechowywania sesji

W zależności od ruchu na Twojej stronie i jej infrastruktury, możesz zechcieć używać Redisa do obsługi sesji użytkowników zamiast PostgreSQL.

Kiedy mówiliśmy o podziale kodu projektu w taki sposób, aby przenieść obsługę sesji z plików do bazy danych, wymieniliśmy wszystkie niezbędne kroki potrzebne do dodania nowej usługi.

Aby dodać Redisa do swojego projektu wystarczy wprowadzić następującą poprawkę:

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:8.0

 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]

Czyż to nie jest piękne?

Zrestartuj Dockera i uruchom usługę Redis:

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

Przetestuj lokalnie przeglądając stronę - wszystko powinno działać tak samo jak wcześniej.

Jak zwykle, zatwierdź (ang. commit) i wdróż (ang. deploy) zmiany:

1
$ symfony deploy

  • « Previous Etap 30: Odkrywanie wewnętrznych mechanizmów Symfony
  • Next » Etap 32: Używanie RabbitMQ jako pośrednika wiadomości

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