predis連接redis sentinel和redis cluster
阿新 • • 發佈:2017-08-24
predis的使用 predis連redis cluster predis連redis sentinel
開發之前都是用phpredis連接redis服務的,後來隨著sentinel和redis cluster的成熟,redis主從都結合sentinel做了高可用,部分數據和並發大的業務使用了redis集群。
相對於phpredis,predis原生支持redis sentinel和redis cluster的連接,當主節點掛掉從節點提升為主節點時客戶端會自動發現新的主節點,從而實現redis的高可用。
由於部分phper不知道通過predis連接sentinel和cluster,特意看了一個predis的文檔,寫了兩個demo:
predis連接redis cluster: 連集群的時候可以只配置一個節點或者部分節點的信息,因為這裏的配置是為了發現集群中的節點的,只要有一個能連上都能成功發現整個集群的節點,但是為了不建議只配置一個節點。
<?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:
<?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
本文出自 “一直在路上” 博客,請務必保留此出處http://chenql.blog.51cto.com/8732050/1958910
predis連接redis sentinel和redis cluster