您的位置:首页 > 数据库 > Redis

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

2014-10-06 10:26 447 查看
周氏一族,整理技术文档,给下一代留点教程......

既然环境已经在前面一篇文章当中搭建好了
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

完美
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cluster redis client predis