• hyperf redis-cluster连接


    这里我之前是使用的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

    1. /**
    2. *
    3. *
    4. * @authors Msy
    5. * @Created-Time: 2022/11/21 17:28
    6. */
    7. class RedisClusterHandler
    8. {
    9. public $connection;
    10. public function connect()
    11. {
    12. $redis = new \RedisCluster(null , [
    13. '39.206.54.171:6380',
    14. '114.126.31.197:6380',
    15. '39.206.54.171:6381',
    16. '114.126.31.197:6381',
    17. '39.206.54.171:6382',
    18. '114.126.31.197:6382'
    19. ] ,0.0,0.0,false ,'ygycachwk');
    20. $this->connection = $redis;
    21. return $redis;
    22. }
    23. public function __call($name, $arguments)
    24. {
    25. try {
    26. $result = $this->connection->{$name}(...$arguments);
    27. } catch (\Throwable $exception) {
    28. $result = $this->retry($name, $arguments, $exception);
    29. }
    30. return $result;
    31. }
    32. protected function retry($name, $arguments, \Throwable $exception)
    33. {
    34. try {
    35. $this->connect();
    36. $result = $this->connection->{$name}(...$arguments);
    37. } catch (\Throwable $exception) {
    38. $this->lastUseTime = 0.0;
    39. throw $exception;
    40. }
    41. return $result;
    42. }
    43. }
    44. $redisC = new RedisClusterHandler();
    45. $redis = $redisC->connect();
    46. $key = $redis->keys('*');
    47. var_dump($key);

  • 相关阅读:
    leetcode148. 排序链表
    Git基本指令
    金九银十,如何面试拿下大厂offer?(附大厂面经+面试宝典)
    个人用户免费,亚马逊正式推出 AI 编程服务 CodeWhisperer
    STM32 CAN使用记录:bxCAN基础通讯
    h5插件_h5页面嵌入客户端调试
    mq的那些问题,你都整明白了?
    【一】1D测量 Measuring——gen_measure_arc()算子
    嵌入式Python高级
    【3】Spring Boot 3 集成mybatis-plus+druid+mysql
  • 原文地址:https://blog.csdn.net/s1095622320/article/details/127983594