前言
前面2篇详细讲解了redis集群的搭建、它的基础命令的实用方法。这一篇说下php中如何实用redis集群。
目前我们用到的 php 的 redis 扩展 主要有2个,第一个是最常用的 phpredis
, 它是用c写的php的高效扩展:https://github.com/phpredis/phpredis,还有1个是predis
, 它是用php代码写的,也用的蛮多的:https://github.com/nrk/predis。
我们分别看下他们在集群中的用法。
phpredis
phpredis的安装
我Mac上是有安装过phpredis扩展的,但是是2.* 版本,是不支持cluster的,所以需要升级到3.0扩展。我记录下升级过程:
~ git clone git@github.com:phpredis/phpredis.git
~ cd phpredis
~ git fetch
~ git checout feature/redis_cluster #切换到cluster分支
~ phpize
~ ./configure
~ make
~ make install
Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20131226/
这样就可以用了。如果你是第一次安装redis扩展,还需要在php.ini中加上:
extension=redis.so
3.0版本的redis扩展已经安装好了。我们可以重启一下php-fpm。
➜ sudo kill -USR2 `cat /usr/local/var/run/php-fpm.pid`
官方的文档太少了:https://github.com/phpredis/phpredis/blob/feature/redis_cluster/cluster.markdown。就这一个。
就根据这个文档来学习简单学习下吧:
先完成初始化连接到redis cluster服务器:
$obj_cluster = new RedisCluster(NULL, ['192.168.33.13:7000', '192.168.33.13:7001', '192.168.33.13:7002', '192.168.33.13:7003', '192.168.33.13:7004']);
var_dump($obj_cluster);
第一个参数传NULL
别问我,我也不知道为啥。反正文档没找到,这篇也没看懂。
第二个参数是我们需要连接的redis cluster的master服务器列表。我们有5个master,就填5个。
打印结果如下:
class RedisCluster#5 (0) {}
一个RedisCluster 类资源。表示redis 已经连接成功了。
那么,我们就可以实用之前redis的方法来尝试了:
$obj_cluster->set('name1', '1111');
$obj_cluster->set('name