Etap 31: Używanie Redisa do przechowywania sesji
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ę:
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]
|
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.