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
相关文章
|
1月前
|
NoSQL 网络安全 Redis
用Windows连接Liunx中的redis
用Windows连接Liunx中的redis
26 0
|
2月前
|
监控 NoSQL Linux
Redis突现拒绝连接问题处理总结
Redis突现拒绝连接问题处理总结
|
22天前
|
缓存 运维 NoSQL
【Redis故障排查】「连接失败问题排查和解决」带你总体分析和整理Redis的问题故障实战开发指南及方案
【Redis故障排查】「连接失败问题排查和解决」带你总体分析和整理Redis的问题故障实战开发指南及方案
60 0
|
9天前
|
运维 NoSQL 算法
Java开发-深入理解Redis Cluster的工作原理
综上所述,Redis Cluster通过数据分片、节点发现、主从复制、数据迁移、故障检测和客户端路由等机制,实现了一个分布式的、高可用的Redis解决方案。它允许数据分布在多个节点上,提供了自动故障转移和读写分离的功能,适用于需要大规模、高性能、高可用性的应用场景。
16 0
|
17天前
|
NoSQL 安全 网络安全
Redis连接:加速数据访问与保障安全传输的关键
Redis连接:加速数据访问与保障安全传输的关键
|
28天前
|
Cloud Native NoSQL 数据管理
Serverless 应用引擎常见问题之首次启动获取不到redis连接如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
28 3
Serverless 应用引擎常见问题之首次启动获取不到redis连接如何解决
|
2月前
|
XML NoSQL Java
java 连接redis 执行查询
要使用Java连接Redis并执行查询,你需要使用Jedis这个Java开源库。首先,你需要在你的Java项目中添加Jedis的依赖。你可以通过在你的项目的pom.xml文件中添加以下代码来实现: ```xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.7.0</version> </dependency> ``` 然后,你需要在代码中导入Jedis库: ```java import redis.clients.jedis.Jedis
|
3月前
|
存储 NoSQL 网络协议
Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
24 0
|
NoSQL Java 编译器
一步一步学习Redis——Java连接Redis(Java中使用Redis命令)
一步一步学习Redis——Java连接Redis(Java中使用Redis命令)
一步一步学习Redis——Java连接Redis(Java中使用Redis命令)

热门文章

最新文章