如何在Symfony 4中使用RedisSessionHandler?断文档

时间:2018-08-11 01:46:24

标签: php symfony

2 个答案:

答案 0 :(得分:4)

您需要定义2个服务:

  • 一个用于Redis连接。
  • 一个用于RedisSessionHandler的人,它将利用该连接。

编辑服务文件:

# config/services.yaml
services:
    Redis:
        class: Redis
        calls:
            - method: connect
              arguments:
                  - '%env(REDIS_HOST)%'
                  - '%env(int:REDIS_PORT)%'
            # If you need key prefix
            # - method: setOption
            #   arguments:
            #       - !php/const Redis::OPT_PREFIX
            #       - 'my_prefix'

    Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler:
        arguments:
            - '@Redis'

(请注意,我在这里将Redis主机和端口存储为环境变量,但是如果需要,可以在其他位置定义它们)。

您现在可以将服务用作会话处理程序:

# config/packages/framework.yaml
framework:  
    session:
        handler_id: Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler

我也有点挣扎,写了一篇更详细的文章:http://blog.michaelperrin.fr/2018/08/14/redis-session-handling-in-symfony/

答案 1 :(得分:1)

对于添加自定义前缀,也许以下更好:

    Redis:
        class: Redis
        calls:
            - method: connect
              arguments:
                  - '%env(REDIS_HOST)%'
                  - '%env(int:REDIS_PORT)%'

#            - method: setOption
#              arguments:
#                  # @see https://symfony.com/blog/new-in-symfony-3-2-php-constants-in-yaml-files
#                  - !php/const Redis::OPT_PREFIX

    Symfony\Component\HttpFoundation\Session\Storage\Handler\RedisSessionHandler:
        arguments:
            - '@Redis'
            # @see https://symfony.com/doc/current/components/yaml/yaml_format.html
            -
                prefix: ivannotes_