predis連線redissentinel和rediscluster

科技小能手發表於2017-11-12

    開發之前都是用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


相關文章