predis连接redis sentinel和redis cluster

简介:

    开发之前都是用phpredis连接redis服务的,后来随着sentinel和redis cluster的成熟,redis主从都结合sentinel做了高可用,部分数据和并发大的业务使用了redis集群。

    相对于phpredis,predis原生支持redis sentinel和redis cluster的连接,当主节点挂掉从节点提升为主节点时客户端会自动发现新的主节点,从而实现redis的高可用。

    由于部分phper不知道通过predis连接sentinel和cluster,特意看了一个predis的文档,写了两个demo:

predis连接redis cluster: 连集群的时候可以只配置一个节点或者部分节点的信息,因为这里的配置是为了发现集群中的节点的,只要有一个能连上都能成功发现整个集群的节点,但是为了不建议只配置一个节点。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
    require  'predis/autoload.php' ;
         $servers  array (
          'tcp://127.0.0.1:6479' ,
          'tcp://127.0.0.1:6480' ,
          'tcp://127.0.0.1:6481' ,
          'tcp://127.0.0.1:6482' ,
          'tcp://127.0.0.1:6483' ,
          'tcp://127.0.0.1:6484' ,
         );
         $options  array ( 'cluster'  =>  'redis' );
         $client  new  Predis\Client( $servers $options );
         $i =0;
         for ( $i =0; $i <100000; $i ++){
                 try
                  {
                  $client ->set( $i "test" . $i );
                  $result  $client ->get( $i );
                  echo  date ( 'y-m-d h:i:s' ,time());
                  echo  " " . $result . "\n" ;
                  }
                 catch (Exception  $e )
                  {
                  echo  date ( 'y-m-d h:i:s' ,time());
                  echo  " " . 'Message: '  . $e ->getMessage(). "\n" ;
                  }
                 sleep(1);
         }
?>


predis连接redis sentinel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
    require  'predis/autoload.php' ;
         $sentinels  = [ 'tcp://127.0.0.1:6380' 'tcp://10.60.40.233:6380' 'tcp://10.60.40.222:6379' ];
         $options    = [ 'replication'  =>  'sentinel' 'service'  =>  'master1' ];
         $client  new  Predis\Client( $sentinels $options );
         date_default_timezone_set( 'Asia/Shanghai' );
         $i =0;
         for ( $i =0; $i <100000; $i ++){
  $client ->set( $i "test" . $i );
  $result  $client ->get( $i );
  echo  date ( 'y-m-d h:i:s' ,time());
  echo  " " . $result . "\n" ;
  sleep (1);
         }
?>


详细用法参考github:https://github.com/nrk/predis



本文转自 emma_cql 51CTO博客,原文链接:http://blog.51cto.com/chenql/1958910

相关文章
|
5月前
|
NoSQL Java 网络安全
SpringBoot启动时连接Redis报错:ERR This instance has cluster support disabled - 如何解决?
通过以上步骤一般可以解决由于配置不匹配造成的连接错误。在调试问题时,一定要确保服务端和客户端的Redis配置保持同步一致。这能够确保SpringBoot应用顺利连接到正确配置的Redis服务,无论是单机模式还是集群模式。
483 5
|
NoSQL 应用服务中间件 API
Redis是如何建立连接和处理命令的
本文主要讲述 Redis 是如何监听客户端发出的set、get等命令的。
1676 160
|
消息中间件 存储 NoSQL
java连接redis和基础操作命令
通过以上内容,您可以掌握在Java中连接Redis以及进行基础操作的基本方法,进而在实际项目中灵活应用。
638 30
|
监控 NoSQL 网络协议
【Azure Redis】部署在AKS中的应用,连接Redis高频率出现timeout问题
查看Redis状态,没有任何异常,服务没有更新,Service Load, CPU, Memory, Connect等指标均正常。在排除Redis端问题后,转向了AKS中。 开始调查AKS的网络状态。最终发现每次Redis客户端出现超时问题时,几乎都对应了AKS NAT Gateway的更新事件,而Redis服务端没有任何异常。因此,超时问题很可能是由于NAT Gateway更新事件导致TCP连接被重置。
320 7
|
NoSQL 网络协议 算法
Redis 客户端连接
10月更文挑战第21天
208 1
|
Java UED Sentinel
微服务守护神:Spring Cloud Sentinel,让你的系统在流量洪峰中稳如磐石!
【8月更文挑战第29天】Spring Cloud Sentinel结合了阿里巴巴Sentinel的流控、降级、熔断和热点规则等特性,为微服务架构下的应用提供了一套完整的流量控制解决方案。它能够有效应对突发流量,保护服务稳定性,避免雪崩效应,确保系统在高并发下健康运行。通过简单的配置和注解即可实现高效流量控制,适用于高并发场景、依赖服务不稳定及资源保护等多种情况,显著提升系统健壮性和用户体验。
348 1
|
监控 Java Sentinel
使用Sentinel进行服务调用的熔断和限流管理(SpringCloud2023实战)
Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
822 3
|
负载均衡 算法 Java
蚂蚁面试:Nacos、Sentinel了解吗?Springcloud 核心底层原理,你知道多少?
40岁老架构师尼恩分享了关于SpringCloud核心组件的底层原理,特别是针对蚂蚁集团面试中常见的面试题进行了详细解析。内容涵盖了Nacos注册中心的AP/CP模式、Distro和Raft分布式协议、Sentinel的高可用组件、负载均衡组件的实现原理等。尼恩强调了系统化学习的重要性,推荐了《尼恩Java面试宝典PDF》等资料,帮助读者更好地准备面试,提高技术实力,最终实现“offer自由”。更多技术资料和指导,可关注公众号【技术自由圈】获取。
蚂蚁面试:Nacos、Sentinel了解吗?Springcloud 核心底层原理,你知道多少?
|
监控 Java Nacos
SpringCloud基础5——微服务保护、Sentinel
sentinel、雪崩问题、流量控制、隔离和降级、授权规则、规则持久化
SpringCloud基础5——微服务保护、Sentinel
|
监控 Java 应用服务中间件
SpringCloud面试之流量控制组件Sentinel详解
SpringCloud面试之流量控制组件Sentinel详解
1176 0