Есть ли способ использовать Redis в качестве хранилища для Http-кэша в Symfony 6.2

В общем-то, все уже описано в заголовке. Есть необходимость использовать Redis в качестве хранилища для http_cache в приложении под Symfony 6.2.

Сконфигурировать такое поведение в framework.yaml по дефолту не представляется возможным, т.к. доступны следующие опции для ключа http_cache:

#0 5.631 !! Unrecognized option "cache_provider" under "framework.http_cache". Availabl
#0 5.631 !! e options are "allow_reload", "allow_revalidate", "debug", "default_ttl", "
#0 5.631 !! enabled", "private_headers", "stale_if_error", "stale_while_revalidate", "t
#0 5.631 !! erminate_on_cache_hit", "trace_header", "trace_level".

Ранее, существовал BazingaCacheExtraBundle, который помогал решить данную проблему, однако, на данный момент дропнут правообладателем, либо же доступ закрыт.

Если углубиться более детально в проблему, то имеется n-ое кол-во подов в k8s, соответственно, каждый под генерирует свой http_cache в файловой системе.

Хотелось бы добиться такого поведения, чтобы при обращении к первому поду генерился кэш, а остальные уже могли его использовать.

Какой профит:

  1. Используем меньше дискогого пространства.
  2. Увеличиваем hit rate захвата кэша.

P.S. Шарить дисковое пространство между подами не является возможным, имеется явное ограничинение на это.

UPD: Как вариант, видится написать свою имплементацию vendor/symfony/http-kernel/HttpCache/StoreInterface-a.


Ответы (2 шт):

Автор решения: lezhni

Может это устроит https://nginx.com/resources/wiki/modules/redis в качестве альтернативы? Нашел ещё такое, но адаптер для Redis придется искать отдельно/реализовать самостоятельно

→ Ссылка
Автор решения: Borislav

Реализовал http-cache в redis самостоятельно (production ready решение, протестировано, живет отлично).

https://github.com/Borislavv/symfony-httpcache-in-redis

→ Ссылка