周氏一族,整理技术文档,给下一代留点教程......
既然环境已经在前面一篇文章当中搭建好了
http://zhoushouby.blog.51cto.com/9150272/1560505
那么接下来,就是要如何灵活调用 redis cluster 发挥功效的时候了。
大家都知道,我们redis是用来辅助mysql,减少压力,我们一般都是通过web前端来调用redis API接口,从而实现redis 功效,但是,有真正干过这回事的童鞋肯定知道,不管是ruby还是jedis,甚至是lua,对于一个全新的redis概念,cluster 3.0,之前的所有client都不能支持了。我们可以看一下官网的说法:
一共是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
看简介,感觉很好,
Smart support for redis-cluster (Redis >= 3.0).
说明支持 redis-cluster 3.0
但是,仔细找一下cluster的配置,你会发现很蛋疼
实践是唯一验证标准,测试一下。
报错
[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
完美