predis連線redissentinel和rediscluster
開發之前都是用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 PredisClient( $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 . " ;
}
catch (Exception $e )
{
echo date ( `y-m-d h:i:s` ,time());
echo " " . `Message: ` . $e ->getMessage(). " ;
}
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 PredisClient( $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 . " ;
sleep (1);
}
?> |
詳細用法參考github:https://github.com/nrk/predis
本文轉自 emma_cql 51CTO部落格,原文連結:http://blog.51cto.com/chenql/1958910
相關文章
- phpredis 和 predisPHPRedis
- 連線和半連線
- Socket連線和Http連線HTTP
- 長連線和短連線
- 左連線和右連線
- sql 內連線和外連線SQL
- Windows下RedisSentinel部署(包含RedisReplication)WindowsRedis
- Laravel 6.0 的 predis 和 phpredis 衝突的原因LaravelRedisPHP
- 長連線和短連線的使用
- 連線池和連線數詳解
- http的長連線和短連線HTTP
- LINUX 硬連線和軟連線Linux
- Oracle的左連線和右連線Oracle
- RedisCluster架構優化Redis架構優化
- 交叉線和直連線
- 深入淺出SQL之左連線、右連線和全連線SQL
- 區分socket連線和tcp/ip連線TCP
- 等值連線和自然連線的區別
- SQL中的左連線和右連線SQL
- JAVA之長連線、短連線和心跳包Java
- HTTP非持續連線和持續連線HTTP
- scrapy軟連線失效和pip軟連線失效
- HTTP長連線和短連線原理淺析HTTP
- 排序和表連線排序
- exists和連線方式
- 1.6.3.3. 本地連線和安全的遠端連線
- 12、Swoole 中 TCP、UDP 和長連線、短連線TCPUDP
- LAN連線和WAN連線有什麼區別?
- Oracle專有(dedicated)連線和共享(shared)連線Oracle
- Linux軟連線和硬連結Linux
- 菜鳥學網路之 —— 長連線和短連線
- MYSQL 檢視最大連線數和修改最大連線數MySql
- pl/sql裡的左連線和右連線符號“+”SQL符號
- SQL Server中內連線和外連線的區別SQLServer
- 網路連線和概述
- 內連線、左連線、右連線
- TCP 三次握手原理以及半連線和全連線TCP
- 一文讀透HTTP的長連線和短連線HTTP