SncRedisBundle 不工作,我做错了什么?

SncRedisBundle not working, what am I doing wrong?

snc_redis:
    clients:
        default:
            type: predis
            alias: default
            dsn: redis://localhost
    session:
        client: session
        prefix: session_
        use_as_default: true

以上是我目前在config.yml中的snc_redis配置 我通过执行以下操作将定义的 snc_redis 添加为我的会话处理程序 ID:

framework:
    ...
    session:
        handler_id: snc_redis.session.handler

我得到的错误:

  The service definition "snc_redis.session_client" does not exist.

当我删除行 client: session 时,它仍然失败:

The child node "client" at path "snc_redis.session" must be configured.

在您的 config.yml 文件中,尝试添加以下内容:

# config.yml
snc_redis:
    clients:
        default:
            type: predis
            alias: default
            dsn: redis://%redis_address%
            logging: %kernel.debug%
        session:
            type: predis
            alias: session
            dsn: redis://%redis_address%/1
            logging: true
    session:
        client: session
        prefix: %project_name%

这将设置 2 个客户端,默认和缓存。您可以使用 default 来处理数据缓存,并使用 session 以便处理会话内容。 如果你只有 1 个分片,你可以只删除会话客户端 (snc_redis.clients.session),然后将 snc_redis.session.client 设置为 default

关于框架部分,试试这个:

framework:
    ...
    session: ~

SncRedisBundle 将根据第一个配置为您管理会话。第二个配置只是告诉 Symfony 保持默认。

告诉我它是否有效,我会相应地进行编辑:)