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擴展已經(jīng)安裝好了烹植。我們可以重啟一下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);

第一個參數(shù)傳NULL 別問我愕贡,我也不知道為啥刊橘。反正文檔沒找到,這篇也沒看懂颂鸿。

第二個參數(shù)是我們需要連接的redis cluster的master服務器列表促绵。我這有3個master,就填3個嘴纺。

打印結(jié)果如下:

class RedisCluster#5 (0) {}

一個RedisCluster 類資源败晴。表示redis 已經(jīng)連接成功了。

那么栽渴,我們就可以實用之前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;

結(jié)果如下:

string(4) "1111"

string(4) "2222"

string(3) "333"

很完美尖坤,沒啥問題。而且闲擦,他是直接就給結(jié)果了慢味。

前面的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>

客戶端是有跳轉(zhuǎn)的寞忿,而php的擴展phpredis直接就給出結(jié)果了驰唬,這點很贊。

phpredis的使用

我們繼續(xù)看這個蛋疼的文檔腔彰,它還提供了一種連接方式:

// 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的最長時間霹抛,這里設(shè)為1.5秒搓逾,表示超過1.5秒要是還沒連接成功就返回false 。

read_timeout表示連接redis成功后杯拐,讀取一個key的超時時間霞篡,有時候讀取一個key 可能value比較大,讀取需要很長時間藕施,這里設(shè)置1.5秒寇损,表示要是過了1.5秒還沒讀取到數(shù)據(jù)就返回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個參數(shù)矛市。其實的操作幾乎一樣。

我嘗試的只用了一個master去連接诲祸,發(fā)現(xiàn)也可以浊吏,并沒什么差別而昨??找田?

如下:

$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"

只填一個也可以歌憨。我在想,它是不是自己就能識別啊墩衙。不需要填這么多啊务嫡。但是,我沒找到相關(guān)的文檔漆改,證明我的觀點心铃。

而且,我換一個slave來連接挫剑,寫也可以成功Hタ邸!樊破!

//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"

好吧愉棱。我姑且認為,它會自動內(nèi)部判斷主從哲戚。還蠻厲害的奔滑。

還有其他的功能和命令,例如:zadd惫恼、lpop档押、hget等。就不說了祈纯。


相關(guān)文章:

? ? ? centos安裝redis3.0.0集群?

? ? ? Ruby 安裝 - Linux?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市叼耙,隨后出現(xiàn)的幾起案子腕窥,更是在濱河造成了極大的恐慌,老刑警劉巖筛婉,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件簇爆,死亡現(xiàn)場離奇詭異,居然都是意外死亡爽撒,警方通過查閱死者的電腦和手機入蛆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硕勿,“玉大人哨毁,你說我怎么就攤上這事≡次洌” “怎么了扼褪?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵想幻,是天一觀的道長。 經(jīng)常有香客問我话浇,道長脏毯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任幔崖,我火速辦了婚禮食店,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赏寇。我一直安慰自己叛买,他們只是感情好,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布蹋订。 她就那樣靜靜地躺著率挣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪露戒。 梳的紋絲不亂的頭發(fā)上椒功,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天,我揣著相機與錄音智什,去河邊找鬼动漾。 笑死,一個胖子當著我的面吹牛荠锭,可吹牛的內(nèi)容都是我干的旱眯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼证九,長吁一口氣:“原來是場噩夢啊……” “哼删豺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起愧怜,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤呀页,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拥坛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蓬蝶,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年猜惋,在試婚紗的時候發(fā)現(xiàn)自己被綠了丸氛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡著摔,死狀恐怖缓窜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤雹洗,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布香罐,位于F島的核電站,受9級特大地震影響时肿,放射性物質(zhì)發(fā)生泄漏庇茫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一螃成、第九天 我趴在偏房一處隱蔽的房頂上張望旦签。 院中可真熱鬧,春花似錦寸宏、人聲如沸宁炫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羔巢。三九已至,卻和暖如春罩阵,著一層夾襖步出監(jiān)牢的瞬間竿秆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工稿壁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留幽钢,地道東北人。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓傅是,卻偏偏與公主長得像拌阴,于是被迫代替她去往敵國和親究履。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容