predis连接redis sentinel和redis cluster

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

    开发之前都是用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

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
16天前
|
存储 监控 负载均衡
redis 集群 (主从复制 哨兵模式 cluster)
redis 集群 (主从复制 哨兵模式 cluster)
|
3天前
|
存储 NoSQL Redis
多次访问redis造成redis连接断开的解决方案
多次访问redis造成redis连接断开的解决方案
9 2
|
5天前
|
NoSQL 关系型数据库 Serverless
Serverless 应用引擎产品使用合集之连接RDS、Redis等数据库时,是否需要通过安全组来控制访问权限
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5天前
|
DataWorks NoSQL Java
DataWorks操作报错合集之数据集成使用公共数据集成资源组写入到redis数据源(使用的是VPC连接),提示以下错误:request action:[InnerVpcGrantVpcInstanceAccessToApp], message:[InvalidInstanceId.怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
6天前
|
分布式计算 NoSQL 大数据
MaxCompute产品使用合集之自定义udf连接云上vpc网络的redis获取数据的步骤是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
8天前
|
NoSQL Redis
|
16天前
|
存储 负载均衡 监控
redis 集群模式(redis cluster)介绍
redis 集群模式(redis cluster)介绍
|
1月前
|
NoSQL 网络安全 Redis
【docker】部署的redis突然连接不上了
【docker】部署的redis突然连接不上了
49 1
|
2天前
|
监控 Java API
深入解析 Spring Cloud Sentinel:分布式系统流量控制与熔断降级的全面指南
深入解析 Spring Cloud Sentinel:分布式系统流量控制与熔断降级的全面指南
5 0
深入解析 Spring Cloud Sentinel:分布式系统流量控制与熔断降级的全面指南
|
1月前
|
监控 Java Sentinel
Spring Cloud Sentinel:概念与实战应用
【4月更文挑战第28天】在分布式微服务架构中,确保系统的稳定性和可靠性至关重要。Spring Cloud Sentinel 为微服务提供流量控制、熔断降级和系统负载保护,有效预防服务雪崩。本篇博客深入探讨 Spring Cloud Sentinel 的核心概念,并通过实际案例展示其在项目中的应用。
38 0