pyurin/yii2-redis-ha

基本的redis-ha客户端

安装次数: 166,778

依赖者: 0

建议者: 0

安全: 0

星星: 17

关注者: 3

分支: 11

开放问题: 0

类型:yii2-extension

1.2 2017-11-14 10:34 UTC

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":"*"
  },