新聞中心
連接Redis失敗是比較常見(jiàn)的一種情況,其可能發(fā)生的原因非常多,從網(wǎng)絡(luò)連接失敗、機(jī)器重啟等等,所以在項(xiàng)目開(kāi)發(fā)中必須考慮到如何處理客戶端與redis服務(wù)器之間的連接斷開(kāi)問(wèn)題。

一段能夠處理redis連接斷開(kāi)問(wèn)題的代碼如下所示:
//redis連接
$redis =new Redis();
//建立客戶端超時(shí)監(jiān)控機(jī)制
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
//發(fā)起連接請(qǐng)求
while (true) {
try {
$redis->connect(‘127.0.0.1’, 6379);
break;
} catch (Exception $e) {
// 一旦出現(xiàn)異常,表示連接未建立,進(jìn)行重連
sleep(2);
continue;
}
}
通過(guò)上述代碼,我們就可以解決客戶端與redis服務(wù)器之間連接斷開(kāi)問(wèn)題。值得注意的是,這里將 redis::OPT_READ_TIMEOUT 設(shè)置為 -1,以此來(lái)避免由于長(zhǎng)期空閑網(wǎng)絡(luò)不可用導(dǎo)致的斷開(kāi)連接。有了這段代碼,無(wú)論什么原因?qū)е碌倪B接斷開(kāi),客戶端都能夠進(jìn)行自動(dòng)重連。
另外,我們還可以設(shè)置客戶端連接?;顧C(jī)制。這里可以使用 redis CLIENT SETNAME 命令來(lái)防止連接被redis服務(wù)器斷開(kāi),該命令的參數(shù)就是客戶端的名字,可以使用如下代碼實(shí)現(xiàn):
//建立客戶端?;顧C(jī)制
$clientName = ‘redis_client_’ . time();
$redis->clientSetName($clientName);
通過(guò)這樣的方式設(shè)置客戶端?;顧C(jī)制,就可以保證客戶端與redis服務(wù)器之間的連接總是活躍的,從而避免了因空閑時(shí)間過(guò)長(zhǎng)而發(fā)生連接斷開(kāi)的情況。
Redis連接斷開(kāi)處理非常重要,如果不進(jìn)行相應(yīng)的處理,可能會(huì)導(dǎo)致很多不必要的問(wèn)題。通過(guò)上述代碼,以及客戶端連接?;顧C(jī)制,可以避免因redis連接斷開(kāi)而導(dǎo)致的各種問(wèn)題,從而使我們能夠“重連又知?!?。
成都網(wǎng)站營(yíng)銷推廣找創(chuàng)新互聯(lián),全國(guó)分站站群網(wǎng)站搭建更好做SEO營(yíng)銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價(jià)格厚道。提供成都服務(wù)器托管租用、綿陽(yáng)服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽(yáng)服務(wù)器機(jī)房服務(wù)器托管租用。
本文標(biāo)題:重連又知福Redis連接斷開(kāi)處理之路(redis連接斷開(kāi)重連)
文章出自:http://www.dlmjj.cn/article/dpcihhe.html


咨詢
建站咨詢
