使用Symfony2的Redis会导致服务器上的站点之间出现问题

时间:2014-01-03 08:06:57

标签: symfony redis

我正在使用symfony2 snc-redis包进行缓存。

在我的服务器上,redis已安装且工作正常。

我的问题是;当我尝试使用redis清除或刷新数据库时,我服务器上使用redis的所有站点都崩溃了。由于prod env而导致内部服务器错误。

我试图在我的config.yml中为我服务器上的每个站点更改redis配置端口,但我认为不起作用。

我的示例snc-redis配置:

snc_redis:
    clients:
        default:
            type: predis
            alias: default
            dsn: redis://localhost
            logging: %kernel.debug%
        cache:
            type: predis
            alias: cache
            dsn: redis://localhost/1
            logging: true
        cluster:
            type: predis
            alias: cluster
            dsn:
                - redis://127.0.0.1/5
                - redis://127.0.0.2/6
                - redis://pw@/var/run/redis/redis-1.sock/7
                - redis://127.0.0.1:6379/8
            options:
                profile: 2.4
                connection_timeout: 10
                connection_persistent: true
                read_write_timeout: 30
                iterable_multibulk: false
                throw_errors: true
                cluster: Snc\RedisBundle\Client\Predis\Connection\PredisCluster
        monolog:
            type: predis
            alias: monolog
            dsn: redis://localhost/1
            logging: false
            options:
                connection_persistent: true
    session:
        client: default
        prefix: foo
        use_as_default: true
    doctrine:
        metadata_cache:
            client: cache
            entity_manager: default
            document_manager: default
        result_cache:
            client: cache
            entity_manager: [default, read]
            document_manager: [default, slave1, slave2]
            namespace: "dcrc:"
        query_cache:
            client: cache
            entity_manager: default
    monolog:
        client: monolog
        key: monolog
    swiftmailer:
        client: default
        key: swiftmailer

monolog:
    handlers:
        main:
            type: service
            id: monolog.handler.redis
            level: debug

我做错了什么?我怎样才能使它正常工作并且不会导致崩溃。

我的Redis捆绑Symfon2:

  

SNC \ RedisBundle \ SncRedisBundle()

https://github.com/snc/SncRedisBundle

2 个答案:

答案 0 :(得分:2)

您可以为每个网站定义前缀,如下所示:

snc_redis:
    clients:
        default:
            dsn: "redis://localhost:6379"
            options:
                prefix : "site_name"
            type: phpredis
            alias: default
            logging: %kernel.debug%

注意:您必须考虑将此前缀添加到所有客户端;)

答案 1 :(得分:1)

您是否尝试更改每个网站的客户端别名?