predis连接redis sentinel和redis cluster

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
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
相关文章
|
2月前
|
NoSQL Redis 数据库
Redis 连接
10月更文挑战第19天
29 0
|
12天前
|
监控 NoSQL 网络协议
【Azure Redis】部署在AKS中的应用,连接Redis高频率出现timeout问题
查看Redis状态,没有任何异常,服务没有更新,Service Load, CPU, Memory, Connect等指标均正常。在排除Redis端问题后,转向了AKS中。 开始调查AKS的网络状态。最终发现每次Redis客户端出现超时问题时,几乎都对应了AKS NAT Gateway的更新事件,而Redis服务端没有任何异常。因此,超时问题很可能是由于NAT Gateway更新事件导致TCP连接被重置。
|
2月前
|
NoSQL 网络协议 算法
Redis 客户端连接
10月更文挑战第21天
33 1
|
3月前
|
监控 NoSQL Redis
Redis Sentinel:秒杀系统背后的可靠性保障神器!
本文详细介绍了如何在个人项目中利用 Redis 哨兵模式保障系统的可靠性与高可用性。哨兵模式通过监控主从服务器状态、自动故障转移和通知客户端等功能,确保在主服务器宕机时系统仍能正常运行。适用于读请求多于写请求的场景,如秒杀系统,能有效缓解数据库压力。同时也探讨了哨兵模式在高并发场景下的优化方法及潜在缺陷,帮助开发者更好地应用该模式。
71 7
Redis Sentinel:秒杀系统背后的可靠性保障神器!
|
2月前
|
监控 NoSQL 算法
Redis Sentinel(哨兵)详解
Redis Sentinel(哨兵)详解
116 4
|
3月前
|
NoSQL Linux Redis
linux安装单机版redis详细步骤,及python连接redis案例
这篇文章提供了在Linux系统中安装单机版Redis的详细步骤,并展示了如何配置Redis为systemctl启动,以及使用Python连接Redis进行数据操作的案例。
76 2
|
4月前
|
运维 监控 NoSQL
【Redis】哨兵(Sentinel)原理与实战全解~炒鸡简单啊
Redis 的哨兵模式(Sentinel)是一种用于实现高可用性的机制。它通过监控主节点和从节点,并在主节点故障时自动进行切换,确保集群持续提供服务。哨兵模式包括主节点、从节点和哨兵实例,具备监控、通知、自动故障转移等功能,能显著提高系统的稳定性和可靠性。本文详细介绍了哨兵模式的组成、功能、工作机制以及其优势和局限性,并提供了单实例的安装和配置步骤,包括系统优化、安装、配置、启停管理和性能监控等。此外,还介绍了如何配置主从复制和哨兵,确保在故障时能够自动切换并恢复服务。
|
4月前
|
缓存 监控 NoSQL
【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤
【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤
|
NoSQL Redis 数据库
一步一步学习Redis——连接服务的相关命令
一步一步学习Redis——连接服务的相关命令
一步一步学习Redis——连接服务的相关命令
|
NoSQL Java 编译器
一步一步学习Redis——Java连接Redis(Java中使用Redis命令)
一步一步学习Redis——Java连接Redis(Java中使用Redis命令)
1064 0
一步一步学习Redis——Java连接Redis(Java中使用Redis命令)