PHP配置及使用redis cluster集群

目前我们用到的 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。

接下来就可以使用redis cluster集群服务:

1,先完成初始化连接到redis cluster服务器:

$obj_cluster = new RedisCluster(NULL, [‘127.0.0.1:7000', '127.0.0.1:7001', '127.0.0.1:7002']);

var_dump($obj_cluster);

第一个参数传NULL 别问我,我也不知道为啥。反正文档没找到,这篇也没看懂。

第二个参数是我们需要连接的redis cluster的master服务器列表。我这有3个master,就填3个。

打印结果如下:

class RedisCluster#5 (0) {}

一个RedisCluster 类资源。表示redis 已经连接成功了。

那么,我们就可以实用之前redis的方法来尝试了:

$obj_cluster->set('name11', '1111');

$obj_cluster->set('name22', '2222');

$obj_cluster->set('name33', '333');

$name1 = $obj_cluster->get('name11');

$name2 = $obj_cluster->get('name22');

$name3 = $obj_cluster->get('name33');

var_dump($name1, $name2, $name3);die;

结果如下:

string(4) "1111"

string(4) "2222"

string(3) "333"

很完美,没啥问题。而且,他是直接就给结果了。

前面的redis cluster 的学习,我们知道name1, name2, name3 是3个key , 会按照算法,分配到3个slot上,有可能分到3台服务器上。

我们连接客户端看下:

redis-cli -c -p 7004

127.0.0.1:7004> get name11

-> Redirected to slot [11311] located at 127.0.0.1:7002

"1111"

127.0.0.1:7002> get name22

-> Redirected to slot [2335] located at 127.0.0.1:7000

"2222"

127.0.0.1:7000> get name33

-> Redirected to slot [10767] located at 127.0.0.1:7001

"333"

127.0.0.1:7001>

客户端是有跳转的,而php的扩展phpredis直接就给出结果了,这点很赞。

phpredis的使用

我们继续看这个蛋疼的文档,它还提供了一种连接方式:

// Connect and specify timeout and read_timeout

$obj_cluster = new RedisCluster(

NULL, Array("127.0.0.1:7000", "127.0.0.1:7001", 1.5, 1.5);

);

后面加入了timeout和read_timeout功能。就是加到master列表的后面。

timeout表示连接redis的最长时间,这里设为1.5秒,表示超过1.5秒要是还没连接成功就返回false 。

read_timeout表示连接redis成功后,读取一个key的超时时间,有时候读取一个key 可能value比较大,读取需要很长时间,这里设置1.5秒,表示要是过了1.5秒还没读取到数据就返回false。

好。我们试一下:

$obj_cluster = new RedisCluster(NULL, ['127.0.0.1:7000', '127.0.0.1:7001', '127.0.0.1:7002', 1.5, 1.5]);

在master列表后面加入了2个参数。其实的操作几乎一样。

我尝试的只用了一个master去连接,发现也可以,并没什么差别???

如下:

$obj_cluster = new RedisCluster(NULL, ['127.0.0.1:7000', 1.5, 1.5]);

$obj_cluster->set('name1', '1111');

$name1 = $obj_cluster->get('name1');

var_dump($name1);

//输出

string(4) "1111"

只填一个也可以。我在想,它是不是自己就能识别啊。不需要填这么多啊。但是,我没找到相关的文档,证明我的观点。

而且,我换一个slave来连接,写也可以成功!!!

//7009是个slave

$obj_cluster = new RedisCluster(NULL, ['127.0.0.1:7004’, 1.5, 1.5]);

$obj_cluster->set('name1', '4555');

$name1 = $obj_cluster->get('name1');

var_dump($name1);

//输出

string(4) "4555"

好吧。我姑且认为,它会自动内部判断主从。还蛮厉害的。

还有其他的功能和命令,例如:zadd、lpop、hget等。就不说了。


相关文章:

      centos安装redis3.0.0集群 

      Ruby 安装 - Linux 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容