久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

Laravel框架實(shí)現(xiàn)redis集群的方法分析

這篇文章主要介紹了Laravel框架實(shí)現(xiàn)redis集群的方法,簡(jiǎn)單分析了Laravel框架redis數(shù)據(jù)庫(kù)集群功能設(shè)置步驟、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Laravel框架實(shí)現(xiàn)redis集群的方法。分享給大家供大家參考,具體如下:

在app/config/database.php中配置如下:

'redis' => array(
    'cluster' => true,
    'default' => array(
      'host'   => '172.21.107.247',
      'port'   => 6379,
    ),
   'redis1' => array(
      'host'   => '172.21.107.248',
      'port'   => 6379,
    ),

其中cluster選擇為true,接下來就可以作集群使用了;

如果把session的driver設(shè)置為redis,則可以使用其集群功能了:

我們來看下session的實(shí)現(xiàn),當(dāng)我們?cè)诖a中這樣寫:

Session::put('test', 124);

實(shí)際的執(zhí)行流程是這樣的:

Illuminate\Support\Facades\Session
Illuminate\Support\Facades\Facade
Illuminate\Session\Facade::app['session']->put
Illuminate\Session\Facade::app['session']為Illuminate\Session\SessionManager
Illuminate\Support\Manager::__call

Session會(huì)根據(jù)返回創(chuàng)建driver

$this->app['config']['session.driver']

即配置文件中配置的,這里我們配置為redis

Illuminate\Session\SessionManager::Illuminate\Session\SessionManager

最終由Illuminate\Session\Store來負(fù)責(zé)put的調(diào)用

而Store類負(fù)責(zé)存儲(chǔ)的類是Illuminate\Session\CacheBasedSessionHandler

后者又將請(qǐng)求轉(zhuǎn)發(fā)給$this->app['cache']->driver($driver)
……
經(jīng)過一系列代碼追查,存儲(chǔ)類為Predis\Client\Database,看其構(gòu)造函數(shù):

public function __construct(array $servers = array())
{
    if (isset($servers['cluster']) && $servers['cluster'])
    {
      $this->clients = $this->createAggregateClient($servers);
    }
    else
    {
      $this->clients = $this->createSingleClients($servers);
    }
}

如果設(shè)置為集群,則調(diào)用createAggregateClient方法

protected function createAggregateClient(array $servers)
{
    $servers = array_except($servers, array('cluster'));
    return array('default' => new Client(array_values($servers)));
}

這里會(huì)把所有服務(wù)器放在default組中

實(shí)際存數(shù)據(jù)的類是Predis\Client,這里有根據(jù)配置創(chuàng)建服務(wù)器的代碼,具體可以自己看下;

Predis\Cluster\PredisClusterHashStrategy類負(fù)責(zé)計(jì)算key的hash,關(guān)鍵函數(shù):

getHash

getKeyFromFirstArgument

而Predis\Cluster\Distribution\HashRing負(fù)責(zé)服務(wù)器環(huán)的維護(hù),關(guān)鍵函數(shù)

addNodeToRing

get

hash

大概原理是這樣,如執(zhí)行以下redis命令

get ok

會(huì)將ok作crc32運(yùn)算得到一個(gè)hash值

所有服務(wù)器按一定算法放到一個(gè)長(zhǎng)度默認(rèn)為128的數(shù)組中,每個(gè)服務(wù)器在其中占幾項(xiàng),由以下決定:

權(quán)重/總權(quán)重*總的服務(wù)器數(shù)量*128,可參考Predis\Cluster\Distribution\HashRing::addNodeToRing方法

每一項(xiàng)的hash值是按服務(wù)器ip:端口的格式,作crc32計(jì)算的

protected function addNodeToRing(&$ring, $node, $totalNodes, $replicas, $weightRatio)
{
    $nodeObject = $node['object'];
    $nodeHash = $this->getNodeHash($nodeObject);
    $replicas = (int) round($weightRatio * $totalNodes * $replicas);
    for ($i = 0; $i < $replicas; $i++) {
      $key = crc32("$nodeHash:$i");
      $ring[$key] = $nodeObject;
    }
}

key的hash值也有了,服務(wù)器環(huán)也計(jì)算好了,剩下的就是查找了,二分法能較快的查找相應(yīng)的服務(wù)器節(jié)點(diǎn)

更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進(jìn)階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家基于Laravel框架的PHP程序設(shè)計(jì)有所幫助。

【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要為大家詳細(xì)介紹了php+redis消息隊(duì)列搶購(gòu)實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
這篇文章主要為大家詳細(xì)介紹了php+redis實(shí)現(xiàn)商城秒殺功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
這篇文章主要介紹了PHP基于redis計(jì)數(shù)器類定義與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了php定義的redis計(jì)數(shù)器類及其相關(guān)使用技巧,需要的朋友可以參考下
Laravel以其簡(jiǎn)潔、優(yōu)雅的特性贏得了大家的廣泛關(guān)注,無論是專家還是新手,在開發(fā)PHP項(xiàng)目的時(shí)候,都會(huì)第一時(shí)間的想到Laravel。本文我們將討論為什么Laravel會(huì)成為最成功的PHP框架
這篇文章主要給大家介紹了關(guān)于利用swoole+redis實(shí)現(xiàn)股票和區(qū)塊鏈服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下
這篇文章主要介紹了PHP實(shí)現(xiàn)的Redis多庫(kù)選擇功能單例類,結(jié)合實(shí)例形式分析了php采用單例模式實(shí)現(xiàn)redis數(shù)據(jù)庫(kù)的多庫(kù)選擇功能,需要的朋友可以參考下
主站蜘蛛池模板: 国产高清在线精品一区二区三区 | 97视频免费| 久久久久黑人 | 啪啪毛片 | 国产精品久久久久av | 黄色大片视频 | 99re在线播放 | wwww.8888久久爱站网 | 国产福利在线 | 国产一区不卡在线观看 | 久久成人免费视频 | 欧美色人 | 色婷婷一区 | 国产免费xxx | 成人午夜免费视频 | 日韩午夜影院 | 蜜桃在线一区二区三区 | 人人叉 | 在线观看精品视频网站 | 一级片免费在线观看 | 日韩中文一区二区 | 久久精品久久久 | 一级a性色生活片久久毛片 一级特黄a大片 | 久久国产精品首页 | 91资源在线观看 | 一级片aaa | 成人av电影网 | www国产成人免费观看视频,深夜成人网 | 色一阁| 国产精品久久二区 | 全免费a级毛片免费看视频免费下 | 国产成人小视频 | 91av亚洲| 欧美久久一区二区三区 | 高清一区二区三区 | 亚洲国产情侣自拍 | 91文字幕巨乱亚洲香蕉 | 欧美日韩中文字幕在线 | 久久四虎 | 少妇一级淫片免费放播放 | 蜜桃特黄a∨片免费观看 |