Використання Redis для зберігання сесій
Залежно від відвідуваності веб-сайту та/або його інфраструктури, ви можете використовувати Redis замість PostgreSQL, щоб керувати сесіями користувачів.
Коли ми говорили про розгалуження коду проекту для переміщення сесії з файлової системи до бази даних, ми перерахували всі необхідні кроки для додавання нового сервісу.
Ось як ви можете додати Redis у свій проект одним патчем:
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 49 50 51
--- a/.platform.app.yaml
+++ b/.platform.app.yaml
@@ -14,6 +14,7 @@ runtime:
- iconv
- mbstring
- pdo_pgsql
+ - redis
- sodium
- xsl
@@ -39,6 +40,7 @@ mounts:
relationships:
database: "database:postgresql"
+ redis: "rediscache:redis"
hooks:
build: |
--- a/.platform/services.yaml
+++ b/.platform/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
storage_factory_id: session.storage.factory.native
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -15,6 +15,10 @@ services:
# - ./docker/db/data:/var/lib/postgresql/data:rw
###< doctrine/doctrine-bundle ###
+ redis:
+ image: redis:5-alpine
+ ports: [6379]
+
volumes:
###> doctrine/doctrine-bundle ###
db-data:
Хіба це не прекрасно?
"Перезавантажте" Docker, щоб запустити службу Redis:
1 2
$ docker-compose stop
$ docker-compose up -d
Протестуйте локально, переглядаючи веб-сайт; все має працювати як і раніше.
Зафіксуйте й розгорніть, як зазвичай:
1
$ symfony cloud:deploy
Йдемо далі
This work, including the code samples, is licensed under a
Creative Commons BY-NC-SA 4.0
license.