flownative/redis-sentinel

支持Sentinel的Flow Redis缓存后端

资助包维护!
robertlemke

安装量: 18,732

依赖者: 0

建议者: 0

安全: 0

星标: 5

关注者: 5

分支: 3

开放问题: 1

类型:neos-package

v2.1.0-beta.2 2024-04-25 13:25 UTC

This package is auto-updated.

Last update: 2024-08-25 14:09:55 UTC


README

MIT license Packagist Maintenance level: Love

支持Sentinel的Flow Redis缓存后端

此包提供支持Sentinel的Redis缓存后端。

安装

该包通过Composer以常规Flow包的形式安装。对于您现有的项目,只需将flownative/redis-sentinel添加到Flow或Neos分布的依赖项中即可。

    $ composer require flownative/redis-sentinel

用法

此包中包含的RedisBackend可以用作neos/cache包提供的Redis后端的直接替换。

对于与独立Redis服务器一起的常规使用,在您的Caches.yaml中提供如下配置

Flow_Mvc_Routing_Route:
    backend: 'Flownative\RedisSentinel\RedisBackend'
    backendOptions: &redisBackendOptions
        hostname: '%env:REDIS_HOST%'
        password: '%env:REDIS_PASSWORD%'
        port: '%env:REDIS_PORT%'
        database: 0
        timeout: 5
        readWriteTimeout: 0.5

Flow_Mvc_Routing_Resolve:
    backend: 'Flownative\RedisSentinel\RedisBackend'
    backendOptions: *redisBackendOptions
    

当然,您也可以使用具体值而不是环境变量。

请注意,您可以为两个不同的超时设置值

  • "timeout"(默认:5)指定连接到Redis时等待的秒数
  • "readWriteTimeout"(默认:1)指定读写操作期间等待的时间

您可以将浮点数指定为超时值。例如,使用0.5将超时设置为半秒。

当Redis与Sentinel服务器一起在高可用性设置中运行时,您需要配置Redis Backend以访问Sentinel服务器而不是实际的Redis节点。

根据您的设置,这看起来可能如下所示

Flow_Mvc_Routing_Route:
    backend: 'Flownative\RedisSentinel\RedisBackend'
    backendOptions: &backendOptions
        sentinels:
            - 'redis://10.101.213.145:26379'
            - 'redis://10.101.213.146:26379'
            - 'redis://10.101.213.147:26379'
        service: 'mymaster'
        password: 'a-very-long-password'
        database: 0
        timeout: 0.5
        readWriteTimeout: 0.1

Flow_Mvc_Routing_Resolve:
    backend: 'Flownative\RedisSentinel\RedisBackend'
    backendOptions: *backendOptions
    

请注意,“service”是您的Redis集群名称(在大多数默认配置中是“mymaster”)。

此包将为所有连接使用相同的密码,目前不支持为Sentinel和客户端服务器指定不同的密码。

日志记录

此缓存后端将记录错误,例如连接超时或其他与Redis服务器通信时的问题。

如果在请求期间发生连接错误,很可能会发生更多相同类型的错误。因此,默认情况下,这些消息将去重:如果错误消息与当前CLI/web请求期间已记录的消息相同,则不会再次记录。

您可以通过将相应的后端选项设置为false来禁用去重记录的错误,以进行调试。

Flow_Mvc_Routing_Route:
    backend: 'Flownative\RedisSentinel\RedisBackend'
    backendOptions:
        database: 0
        
        deduplicateErrors: false

如果您不想记录错误(例如,因为您通过MultiBackend记录错误),您可以关闭此缓存后端的日志记录。

Flow_Mvc_Routing_Route:
    backend: 'Flownative\RedisSentinel\RedisBackend'
    backendOptions:
        database: 0
        
        logErrors: false

命令行工具

此包提供CLI命令,可以帮助调试配置或连接问题。

redissentinel:list

显示Redis Sentinel缓存后端的配置,包括定义为Multi Backend子后端的后端。

Screenshot

redissentinel:connect

尝试与指定的缓存连接。如果缓存使用Multi Backend,则此命令将跳过Multi Backend行为,并直接实例化Redis Sentinel Backend。如果可能,将显示并解释错误。

Screenshot

Screenshot

测试

您可以使用环境变量REDIS_HOSTREDIS_PORTREDIS_PASSWORD调整功能测试中使用的宿主、端口和密码。

致谢

此缓存后端由Flownative的Robert Lemke开发,基于Neos Flow Redis Backend,最初由Christopher Hlubek创建,后来由Neos核心团队改进。