周氏一族,整理技术文档,给下一代留点教程......


既然环境已经在前面一篇文章当中搭建好了
http://zhoushouby.blog.51cto.com/9150272/1560505

那么接下来,就是要如何灵活调用 redis cluster 发挥功效的时候了。


大家都知道,我们redis是用来辅助mysql,减少压力,我们一般都是通过web前端来调用redis API接口,从而实现redis 功效,但是,有真正干过这回事的童鞋肯定知道,不管是ruby还是jedis,甚至是lua,对于一个全新的redis概念,cluster 3.0,之前的所有client都不能支持了。我们可以看一下官网的说法:


redis 3.0 cluster 集群 学习之路篇 [4]_ predis

一共是5个可以支持的

但是,redis-cli,我们可以不用去看他了,这是后台管理工具,不能用作前端

redis-rb-cluster,这个可以用,但是需要自己写脚本,麻烦

redis-py-cluster,也不错,但是她已经停止服务了,6个月前。那就别往坑了跳

Predis ,这个好,实在是good,而且最近还是很活跃。

Jedis,这个好,但是这个是java的,不适合放在前端


所以,毫无疑问,选择Predis,其实,在redis 2.6的时候 ,就已经知道Predis这个东西了,但是之前先比phpredis之前,略逊了一点,因为他是纯php代码,而phpredis是C编写,所以略胜出。不过到这个之后了,就不再去比较这些了,能先给我用着,就算很好的啦。


说干,就干


Predis 官网  https://github.com/nrk/predis

看简介,感觉很好, 

说明支持 redis-cluster 3.0


但是,仔细找一下cluster的配置,你会发现很蛋疼

redis 3.0 cluster 集群 学习之路篇 [4]_redis _02

实践是唯一验证标准,测试一下。


报错

[root@server22 ~]# cat /var/log/php-fpm/www-error.log


[06-Oct-2014 09:40:44] PHP Parse error:  syntax error, unexpected '[' in /apache/phpredis/predis/zhou.php on line 6

[06-Oct-2014 09:40:44] PHP Parse error:  syntax error, unexpected '[' in /apache/phpredis/predis/zhou.php on line 6

[06-Oct-2014 09:41:59] PHP Warning:  require(Autoloader.php): failed to open stream: No such file or directory in /apache/phpredis/predis/zhou.php on line 2

[06-Oct-2014 09:41:59] PHP Fatal error:  require(): Failed opening required 'Autoloader.php' (include_path='.:/usr/share/pear:/usr/share/php') in /apache/phpredis/predis/zhou.php on line 2

[06-Oct-2014 09:42:01] PHP Warning:  require(Autoloader.php): failed to open stream: No such file or directory in /apache/phpredis/predis/zhou.php on line 2

[06-Oct-2014 09:42:01] PHP Fatal error:  require(): Failed opening required 'Autoloader.php' (include_path='.:/usr/share/pear:/usr/share/php') in /apache/phpredis/predis/zhou.php on line 2


那就说明格式有问题咯


实在没办法,百度,找了好几个小时,全中国大陆,没有一个人对这个有发表过感慨


那我就做第一个吃草的人吧


自己动手,看源代码,写了下面这么一段


<?php

require 'autoload.php';


$servers = array(

    'tcp://10.1.3.21:8021',

    'tcp://10.1.3.22:8022',

    'tcp://10.1.3.23:8023',

    'tcp://10.1.3.24:8024',

    'tcp://10.1.3.25:8025',

    'tcp://10.1.3.26:8026',

);


$client = new Predis\Client($servers, array('cluster' => 'redis'));


$client->set("yiyi", "barbarbar");

$yiyi = $client->get("yiyi");

echo $yiyi;

?>


胜利永远属于敢于尝试的人,成功了!


测试

yiyi   barbarbar


然后,删除服务器列表当中,剩下最后两个,修改 yiyi为  88888,然后执行,会发现,一样成功

然后,再恢复服务器列表,剩下中间两个,直接 get yy,会得到  88888


完美