hyperf redis-cluster连接

23 篇文章 0 订阅

这里我之前是使用的redis-sentinel哨兵 , 但是总有redis无法连接的情况发生 , 于是从 1主3从3哨兵直接上cluster集群 , 3主3从

这里有一个注意事项 , 在使用redis-cli的时候需要加上-c 参数 , 否则会报错

配置很简单 , 随便在网上一搜一大堆 , 但是一旦出问题 , 网上有效的解决方案会很少 , 官方文档也不太容易懂 , 很多网上的帖子都是复制粘贴的和想要的结果根本不搭边😒

hyperf关于这里的配置还是很容易的

首先在config\autoload\redis.php 文件中查看一下是否存在关于redis-cluster的配置项

如果没有可以在vendor\hyperf\redis\publish 文件夹下复制一份 , 因为我这里是远程连接服务器开发 , 所以就没使用命令行publish出来, 哈哈

这里的seeds选项是各个redis节点, 我这里是所有节点都写了 ,但是我测试只写一个节点也是好使的

enable选项一定要开启 , 在env下添加一下  REDIS_CLUSTER_ENABLE 就行了

然后 , 这里就可以使用controller试一下好不好使了

使用的时候需要注意 , 获取redis实例不应该是 \Redis , 而是 Hyperf\Redis\Redis  , 需要使用container容器获取实例

下面我写了一个使用phpredis扩展关于cluster的demo

<?php


/**
 *
 *
 * @authors Msy
 * @Created-Time: 2022/11/21 17:28
 */
class RedisClusterHandler
{
    public $connection;
    public function connect()
    {
        $redis = new \RedisCluster(null , [
            '39.206.54.171:6380',
            '114.126.31.197:6380',
            '39.206.54.171:6381',
            '114.126.31.197:6381',
            '39.206.54.171:6382',
            '114.126.31.197:6382'
        ] ,0.0,0.0,false ,'ygycachwk');
        $this->connection = $redis;
        return $redis;
    }

    public function __call($name, $arguments)
    {
        try {
            $result = $this->connection->{$name}(...$arguments);
        } catch (\Throwable $exception) {
            $result = $this->retry($name, $arguments, $exception);
        }
        return $result;
    }

    protected function retry($name, $arguments, \Throwable $exception)
    {
        try {
            $this->connect();
            $result = $this->connection->{$name}(...$arguments);
        } catch (\Throwable $exception) {
            $this->lastUseTime = 0.0;
            throw $exception;
        }
        return $result;
    }
}




$redisC = new RedisClusterHandler();
$redis = $redisC->connect();
$key = $redis->keys('*');
var_dump($key);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苗先生的PHP记录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值