pyurin / yii2-redis-ha
基本的redis-ha客户端
1.2
2017-11-14 10:34 UTC
Requires
This package is not auto-updated.
Last update: 2024-09-14 16:29:29 UTC
README
这个Yii2组件基于核心yii2-redis组件 https://github.com/yiisoft/yii2-redis,但提供了与带有哨兵的master-slave redis集群一起工作的能力。
它相当简单 - 从给定的哨兵中获取主服务器地址,然后连接到它,然后像 \yii\redis\Connection 一样操作。
它只与哨兵一起工作,不连接到没有哨兵的redis主机。
连接过程的工作流程
遍历给定的哨兵,寻找一个存活的哨兵,它会给出主主机地址。
如果哨兵没有响应或其响应为空,则我们将尝试检查下一个。
如果没有收到成功的回复,则连接将失败。
在我们找到redis主服务器后,我们将连接到它。
如果连接到主服务器失败,我们将不会尝试其他任何操作,我们将失败。
如果我们成功连接到主服务器,然后我们将使用 role
命令检查它是否真的是主服务器(https://redis.ac.cn/topics/sentinel-clients)。
如果不是 - 我们将失败,如果是 - 我们成功连接。
推荐的配置
Redis HA集群必须由至少2个redis服务器和3个哨兵来完成。
我认为,从性能的角度来看,考虑到这种实现,最好在每个本地应用程序中有一个哨兵服务器,以避免不必要的开销。
如果我们将先前给出的主服务器缓存起来,那将不会很重要,但我们没有。我们每次连接到redis之前都会询问哨兵。
这就是我看到的一个简单的架构
------- -------
| | | |
| Redis | | Redis |
| | | |
------- \ /-------
| \ / |
| \ / |
| \-----------/ |
| |\ /| |
| | Sentinel | |
| | . . | |
| --.------.- |
| . . |
| . . |
-----|-------.--- -.----|----------
| | . | | . | |
| Sentinel. . .| . . .|. . Sentinel |
| | | | | |
| (localhost) | | (localhost) |
| | | | | |
| | | | | |
| APP | | APP |
| | | |
----------------- -----------------
使用方法
基本示例
'session' => [
'class' => '\yii\redis\Session',
'redis' => [
'class' => '\pyurin\yii\redisHa\Connection',
'masterName' => 'mymaster',
'sentinels' => [
'localhost'
]
]
],
哨兵服务器按数组中存在的顺序查询。
安装
通过composer可用
"require" : {
"pyurin/yii2-redis-ha":"*"
},