真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

nosql圖片,nosql 圖數(shù)據(jù)庫

騰訊云的產(chǎn)品介紹

騰訊云包括云服務(wù)器、云數(shù)據(jù)庫、CDN、云安全、萬象圖片和云點(diǎn)播等產(chǎn)品。

創(chuàng)新互聯(lián)建站于2013年開始,先為巴州等服務(wù)建站,巴州等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為巴州企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

開發(fā)者通過接入騰訊云平臺(tái),可降低初期創(chuàng)業(yè)的成本,能更輕松地應(yīng)對(duì)來自服務(wù)器、存儲(chǔ)以及帶寬的壓力。 云服務(wù)器

高性能高穩(wěn)定的云虛擬機(jī),可在云中提供彈性可調(diào)節(jié)的計(jì)算容量,不讓計(jì)算能束縛您的想象;您可以輕松購(gòu)買自定義配置的機(jī)型,在幾分鐘內(nèi)獲取到新服務(wù)器,并根據(jù)您的需要使用鏡像進(jìn)行快速的擴(kuò)容。

彈性web 服務(wù)

彈性Web 引擎(Cloud Elastic Engine)是一種Web 引擎服務(wù),是一體化web 應(yīng)用運(yùn)行環(huán)境,彈性伸縮,中小開發(fā)者的利器。通過提供已部署好php、nginx 等基礎(chǔ)web 環(huán)境,讓您僅需上傳自己的代碼,即可輕松地完成web 服務(wù)的搭建。

負(fù)載均衡

騰訊云負(fù)載均衡服務(wù),用于將業(yè)務(wù)流量自動(dòng)分配到多個(gè)云服務(wù)器、彈性web 引擎等計(jì)算單元的服務(wù),幫您構(gòu)建海量訪問的業(yè)務(wù)能力,以及實(shí)現(xiàn)高水平的業(yè)務(wù)容錯(cuò)能力。騰訊云提供公網(wǎng)及內(nèi)外負(fù)載均衡,分別處理來自公網(wǎng)和云內(nèi)的業(yè)務(wù)流量分發(fā)。 云數(shù)據(jù)庫

云數(shù)據(jù)庫(CDB:Cloud Data Base)是騰訊云平臺(tái)提供的面向互聯(lián)網(wǎng)應(yīng)用的數(shù)據(jù)存儲(chǔ)服務(wù)。

NoSQL 高速存儲(chǔ)

騰訊NoSQL 高速存儲(chǔ),是騰訊自主研發(fā)的極高性能、內(nèi)存級(jí)、持久化、分布式的Key-Value存儲(chǔ)服務(wù)。NoSQL 高速存儲(chǔ)以最終落地存儲(chǔ)來設(shè)計(jì),擁有數(shù)據(jù)庫級(jí)別的訪問保障和持續(xù)服務(wù)能力。支持Memcached 協(xié)議,能力比Memcached 強(qiáng)(能落地),適用Memcached、TTServer 的地方都適用NoSQL 高速存儲(chǔ)。NoSQL 高速存儲(chǔ)解決了內(nèi)存數(shù)據(jù)可靠性、分布式及一致性上的問題,讓海量訪問業(yè)務(wù)的開發(fā)變得簡(jiǎn)單快捷。

對(duì)象存儲(chǔ)服務(wù)(beta)

對(duì)象存儲(chǔ)服務(wù)(COS:Cloud Object Service),是騰訊云平臺(tái)提供的對(duì)象存儲(chǔ)服務(wù)。COS 為開發(fā)者提供安全、穩(wěn)定、高效、實(shí)惠的對(duì)象存儲(chǔ)服務(wù),開發(fā)者可以將任意動(dòng)態(tài)、靜態(tài)生成的數(shù)據(jù),存放到COS 上,再通過HTTP 的方式進(jìn)行訪問。COS 的文件訪問接口提供全國(guó)范圍內(nèi)的動(dòng)態(tài)加速,使開發(fā)者無需關(guān)注網(wǎng)絡(luò)不同所帶來的體驗(yàn)問題。

CDN

CDN(Content Delivery Network)即內(nèi)容分發(fā)網(wǎng)絡(luò)。騰訊CDN 服務(wù)的目標(biāo)與一般意義上的CDN 服務(wù)是一樣的,旨在將開發(fā)者網(wǎng)站中提供給終端用戶的內(nèi)容(包括網(wǎng)頁對(duì)象—文本、圖片、腳本,可下載的對(duì)象—多媒體文件、軟件、文檔,等等),發(fā)布到多個(gè)數(shù)據(jù)中心的多臺(tái)服務(wù)器上,使用戶可以就近取得所需的內(nèi)容,提高用戶訪問網(wǎng)站的響應(yīng)速度。 云監(jiān)控

騰訊云監(jiān)控是面向騰訊云客戶的一款監(jiān)控服務(wù),能夠?qū)蛻糍?gòu)買的云資源以及基于騰訊云構(gòu)建的應(yīng)用系統(tǒng)進(jìn)行實(shí)時(shí)監(jiān)測(cè)。開發(fā)人員或者系統(tǒng)管理員可以通過騰訊云監(jiān)控收集各種性能指標(biāo),了解其系統(tǒng)運(yùn)行的相關(guān)信息,并做出實(shí)時(shí)響應(yīng),保證自己的服務(wù)正常運(yùn)行。

騰訊云監(jiān)控提供了可靠,靈活的監(jiān)控解決方案,當(dāng)您首次購(gòu)買云服務(wù)后,不需要任何設(shè)置,就可以獲得基礎(chǔ)監(jiān)控指標(biāo),同時(shí),也可以通過簡(jiǎn)單的步驟后,獲取到更多的個(gè)性化指標(biāo)。除了豐富的監(jiān)控指標(biāo)視圖以外,騰訊云監(jiān)控還提供個(gè)性化的告警服務(wù),客戶可以對(duì)任意監(jiān)控指標(biāo)自定義告警策略。通過短信,郵件,微信等方式,實(shí)時(shí)推送故障告警。

騰訊云監(jiān)控也是一個(gè)開放式的監(jiān)控平臺(tái),支持用戶上報(bào)個(gè)性化的指標(biāo),提供多個(gè)維度,多種粒度的實(shí)時(shí)數(shù)據(jù)統(tǒng)計(jì)以及告警分析。并提供開放式的API,讓客戶通過接口也能夠獲取到監(jiān)控?cái)?shù)據(jù)。

云安全

騰訊公司安全團(tuán)隊(duì)在處理各種安全問題的過程中積累了豐富的技術(shù)和經(jīng)驗(yàn),騰訊云安全將這些寶貴的安全技術(shù)和經(jīng)驗(yàn)打造成優(yōu)秀的安全服務(wù)產(chǎn)品,為開發(fā)商提供業(yè)界領(lǐng)先的安全服務(wù)。騰訊云安全能夠幫助開發(fā)商免受各種攻擊行為的干擾和影響,讓客戶專注于自己創(chuàng)新業(yè)務(wù)的發(fā)展,極大的降低了客戶在基礎(chǔ)環(huán)境安全和業(yè)務(wù)安全上的投入和成本。

云撥測(cè)

云撥測(cè)依托騰訊專有的服務(wù)質(zhì)量監(jiān)測(cè)網(wǎng)絡(luò),利用分布于全球的服務(wù)質(zhì)量監(jiān)測(cè)點(diǎn),對(duì)用戶的網(wǎng)站,域名,后臺(tái)接口等進(jìn)行周期性監(jiān)控, 并提供實(shí)時(shí)告警, 性能和可用性視圖展示,智能分析等服務(wù)。 TOD 大數(shù)據(jù)處理

TOD 是騰訊云為用戶提供的一套完整的、開箱即用的云端大數(shù)據(jù)處理解決方案。開發(fā)者可以在線創(chuàng)建數(shù)據(jù)倉(cāng)庫,編寫、調(diào)試和運(yùn)行SQL 腳本,調(diào)用MR程序,完成對(duì)海量數(shù)據(jù)的各種處理。另外開發(fā)者還可以將編寫的數(shù)據(jù)處理腳本定義成周期性執(zhí)行的任務(wù),通過可視化界面拖拽定義任務(wù)間依賴關(guān)系,實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)處理工作流。主要應(yīng)用于海量數(shù)據(jù)統(tǒng)計(jì)、數(shù)據(jù)挖掘等領(lǐng)域。已經(jīng)為微信、QQ 空間、廣點(diǎn)通、騰訊游戲、財(cái)付通、QQ 網(wǎng)購(gòu)等關(guān)鍵業(yè)務(wù)的提供了數(shù)據(jù)分析服務(wù)。

騰訊云分析

騰訊云分析是一款專業(yè)的移動(dòng)應(yīng)用統(tǒng)計(jì)分析工具,支持主流智能手機(jī)平臺(tái)。開發(fā)者可以方便地通過嵌入統(tǒng)計(jì)SDK,實(shí)現(xiàn)對(duì)移動(dòng)應(yīng)用的全面監(jiān)測(cè),實(shí)時(shí)掌握產(chǎn)品表現(xiàn),準(zhǔn)確洞察用戶行為。不僅僅是記錄,移動(dòng)APP 統(tǒng)計(jì)還分析每個(gè)環(huán)節(jié),利用數(shù)據(jù)透過現(xiàn)象看本質(zhì)。騰訊云分析還同時(shí)提供業(yè)內(nèi)市場(chǎng)排名趨勢(shì)、競(jìng)品排名監(jiān)控等情報(bào)信息,讓您在應(yīng)用開發(fā)運(yùn)營(yíng)過程中,知己知彼,百戰(zhàn)百勝。

騰訊云搜

騰訊云搜(Tencent Cloud Search)是騰訊公司基于在搜索領(lǐng)域多年的技術(shù)積累,對(duì)公司內(nèi)部各大垂直搜索業(yè)務(wù)搜索需求進(jìn)行高度抽象, 把搜索引擎組件化、平臺(tái)化、服務(wù)化,最終形成成熟的搜索對(duì)外開放能力,為廣大移動(dòng)應(yīng)用開發(fā)者和網(wǎng)站站長(zhǎng)推出的一站式結(jié)構(gòu)化數(shù)據(jù)搜索托管服務(wù)。 移動(dòng)加速

移動(dòng)加速服務(wù)是騰訊云針對(duì)終端應(yīng)用提供的訪問加速服務(wù),通過加速機(jī)房、優(yōu)化路由算法、動(dòng)態(tài)數(shù)據(jù)壓縮等多重措施提升移動(dòng)應(yīng)用的訪問速度和用戶體驗(yàn),并為客戶提供了加速效果展示、趨勢(shì)對(duì)比、異常告警等運(yùn)營(yíng)工具隨時(shí)了解加速效果。

應(yīng)用加固

應(yīng)用加固服務(wù)是騰訊云依托多年終端安全經(jīng)驗(yàn),提供的一項(xiàng)終端應(yīng)用安全加固服務(wù)。具有操作簡(jiǎn)單、多渠道監(jiān)控、防反編譯防篡改防植入、零影響的特點(diǎn),幫助用戶保護(hù)應(yīng)用版權(quán)和收入。

騰訊云安全認(rèn)證

騰訊云安全認(rèn)證是騰訊云提供的免費(fèi)安全認(rèn)證服務(wù),通過申請(qǐng)審核的用戶將獲得權(quán)威的騰訊云認(rèn)證展示,讓您的業(yè)務(wù)獲得騰訊億萬用戶的認(rèn)可。免費(fèi)安全服務(wù),權(quán)威認(rèn)證展示,騰訊云已為2.6萬網(wǎng)站、應(yīng)用保駕護(hù)航。

信鴿推送

信鴿(XG Push)是一款專業(yè)的免費(fèi)移動(dòng)App 推送平臺(tái),支持百億級(jí)的通知/ 消息推送,秒級(jí)觸達(dá)移動(dòng)用戶,現(xiàn)已全面支持Android 和iOS 兩大主流平臺(tái)。開發(fā)者可以方便地通過嵌入SDK,通過API 調(diào)用或者Web 端可視化操作,實(shí)現(xiàn)對(duì)特定用戶推送,大幅提升用戶活躍度,有效喚醒沉睡用戶,并實(shí)時(shí)查看推送效果。

域名備案

騰訊云備案服務(wù),幫助您將網(wǎng)站在工信部系統(tǒng)中進(jìn)行登記,獲得備案證書懸掛在網(wǎng)站底部。目前支持企業(yè)、個(gè)人、政府機(jī)關(guān)、事業(yè)單位、社會(huì)團(tuán)體備案。

云API

云API 是構(gòu)建云開放生態(tài)重要的一環(huán)。騰訊云提供的計(jì)算、數(shù)據(jù)、運(yùn)營(yíng)運(yùn)維等基礎(chǔ)能力,包括云服務(wù)器、云數(shù)據(jù)庫、CDN 和對(duì)象存儲(chǔ)服務(wù)等,以及騰訊云分析(MTA)、騰訊云推送(信鴿)等大數(shù)據(jù)運(yùn)營(yíng)服務(wù)等,都將以標(biāo)準(zhǔn)的開放API 的形式提供給廣大企業(yè)和開發(fā)者使用,方便開發(fā)者集成和二次開發(fā)。

萬象圖片

萬象圖片是將QQ空間相冊(cè)積累的十年圖片經(jīng)驗(yàn)開放給開發(fā)者,提供專業(yè)一體化的圖片解決方案,涵蓋圖片上傳、下載、存儲(chǔ)、圖像處理。

維納斯

維納斯(Wireless Network Service)專業(yè)的移動(dòng)網(wǎng)絡(luò)接入服務(wù),使用騰訊骨干網(wǎng)絡(luò),全國(guó)400個(gè)節(jié)點(diǎn),連通成功率99.9%。

云點(diǎn)播

騰訊云一站式視頻點(diǎn)播服務(wù),匯聚騰訊強(qiáng)大視頻處理能力。從靈活上傳到快速轉(zhuǎn)碼,從便捷發(fā)布到自定義播放器開發(fā),為客戶提供專業(yè)可靠的完整視頻服務(wù)。

關(guān)系型和非關(guān)系型數(shù)據(jù)庫的區(qū)別

當(dāng)前主流的關(guān)系型數(shù)據(jù)庫有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。

非關(guān)系型數(shù)據(jù)庫有 NoSql、Cloudant。

nosql和關(guān)系型數(shù)據(jù)庫比較?

優(yōu)點(diǎn):

1)成本:nosql數(shù)據(jù)庫簡(jiǎn)單易部署,基本都是開源軟件,不需要像使用oracle那樣花費(fèi)大量成本購(gòu)買使用,相比關(guān)系型數(shù)據(jù)庫價(jià)格便宜。

2)查詢速度:nosql數(shù)據(jù)庫將數(shù)據(jù)存儲(chǔ)于緩存之中,關(guān)系型數(shù)據(jù)庫將數(shù)據(jù)存儲(chǔ)在硬盤中,自然查詢速度遠(yuǎn)不及nosql數(shù)據(jù)庫。

3)存儲(chǔ)數(shù)據(jù)的格式:nosql的存儲(chǔ)格式是key,value形式、文檔形式、圖片形式等等,所以可以存儲(chǔ)基礎(chǔ)類型以及對(duì)象或者是集合等各種格式,而數(shù)據(jù)庫則只支持基礎(chǔ)類型。

4)擴(kuò)展性:關(guān)系型數(shù)據(jù)庫有類似join這樣的多表查詢機(jī)制的限制導(dǎo)致擴(kuò)展很艱難。

缺點(diǎn):

1)維護(hù)的工具和資料有限,因?yàn)閚osql是屬于新的技術(shù),不能和關(guān)系型數(shù)據(jù)庫10幾年的技術(shù)同日而語。

2)不提供對(duì)sql的支持,如果不支持sql這樣的工業(yè)標(biāo)準(zhǔn),將產(chǎn)生一定用戶的學(xué)習(xí)和使用成本。

3)不提供關(guān)系型數(shù)據(jù)庫對(duì)事物的處理。

前端自學(xué)可以么? 難不難?

因人而異

自學(xué)肯定也是可以的,最主要還是要看個(gè)人的學(xué)習(xí)能力,意志力,和自己的決心,

下面我就說一下,在自學(xué)時(shí)需要注意的一些誤區(qū)和如何自學(xué)前端知識(shí)。

前端自學(xué)者存在的學(xué)習(xí)誤區(qū):

1、所學(xué)東西可能已過時(shí)

奉為經(jīng)典的東西可能已經(jīng)過時(shí),或者已經(jīng)有了更好的替代者,而你獲取信息的渠道有限,消息滯后,導(dǎo)致學(xué)習(xí)的內(nèi)容也相對(duì)滯后。

2、學(xué)習(xí)方法盲目。

看書看不懂就找視頻類教程學(xué)習(xí),覺得教程跟自己的口味不符就另尋他法,因?yàn)樽约喝鄙賹?duì)資源的辨識(shí)能力,總是在沒有清晰規(guī)劃學(xué)習(xí)線路的情況就盲目學(xué)習(xí),導(dǎo)致無效學(xué)習(xí)時(shí)間過長(zhǎng)而收獲寥寥。

3、只有理論,缺乏真實(shí)項(xiàng)目鍛煉。

對(duì)技術(shù)的理解停留在理論層次,而缺乏真實(shí)企業(yè)項(xiàng)目的歷練,如果沒有相關(guān)實(shí)習(xí)或工作經(jīng)歷,對(duì)前端崗位具體的責(zé)任劃分和工作流程了解不充分。

如何自學(xué)前端知識(shí):

自學(xué)方法:

1、作為一個(gè)初學(xué)者,你必須明確系統(tǒng)的學(xué)習(xí)方案,我建議一定有一個(gè)指導(dǎo)的人,全靠自己學(xué),放棄的幾率非常大,在你對(duì)于web前端還沒有任何概念的時(shí)候,需要一個(gè)人領(lǐng)進(jìn)門,之后就都靠自己鉆研,第一步就是確定web前端都需要哪些內(nèi)容,并且在多少時(shí)間內(nèi)學(xué)完,建議時(shí)間6個(gè)月保底。

2、視頻為主,書為輔。很多初學(xué)者在學(xué)習(xí)前端的時(shí)候非常喜歡去買書,但是最后的結(jié)果是什么?看來看去什么都不會(huì)寫,所以在這里給大家提醒,書可以看,但是是在建立于你已經(jīng)對(duì)于某個(gè)知識(shí)點(diǎn)有了具體操作的執(zhí)行后,在用書去鞏固概念,這樣更加利于你對(duì)于知識(shí)的理解。

3、對(duì)于學(xué)習(xí)技術(shù)來講,掌握一個(gè)學(xué)習(xí)方法是非常重要的,其實(shí)對(duì)于學(xué)習(xí)web前端來講,學(xué)習(xí)方法確實(shí)很多都是相通的,一旦學(xué)習(xí)方法不對(duì),可能就會(huì)造成“方法不對(duì),努力白費(fèi)”。其實(shí)關(guān)于這方面還是很多的,我就簡(jiǎn)單說個(gè)例子,有的人邊聽課邊跟著敲代碼,這樣就不對(duì),聽課的時(shí)候就專心聽,做題的時(shí)候就專心做題,這都是過來人的經(jīng)驗(yàn),一定要聽。根據(jù)每個(gè)人的不同,可能學(xué)習(xí)方法也會(huì)有所出路,找到適合你自己的學(xué)習(xí)法方法是學(xué)習(xí)的前提。

4、不建議自己一個(gè)人瞎學(xué),在我了解學(xué)習(xí)編程的這些人來看,從零基礎(chǔ)開始學(xué)并且最后成功做這份工作的其實(shí)并沒有幾個(gè),我覺得大部分原因就是因?yàn)樗麄兌疾涣私鈝eb前端是干什么的,學(xué)什么的,就盲目的買書看,到處找視頻看,最后看著看著就放棄了,所以我建議初學(xué)者在沒有具體概念之前,還是找有經(jīng)驗(yàn)的人請(qǐng)教一下,聊過之后你就會(huì)知道web前端具體是干什么的,該怎么學(xué),這是我個(gè)人的小建議,可以不采納。

學(xué)前端的話,書籍是必不可少的:

1、《JavaScript高級(jí)程序設(shè)計(jì)(第3版) 紅皮書 》,適合有一定編程經(jīng)驗(yàn)的Web應(yīng)用開發(fā)人員閱讀,也可作為高校及社會(huì)實(shí)用技術(shù)培訓(xùn)相關(guān)專業(yè)課程的教材。

2、《JavaScript權(quán)威指南(第6版)》 犀牛書,本書不僅適合初學(xué)者系統(tǒng)學(xué)習(xí),也適合有經(jīng)驗(yàn)的 JavaScript 開發(fā)者隨手翻閱。

3、《JavaScript DOM編程藝術(shù) (第2版)》,本書在簡(jiǎn)潔明快地講述JavaScript和DOM的基本知識(shí)之后,通過幾個(gè)實(shí)例演示了專業(yè)水準(zhǔn)的網(wǎng)頁開發(fā)技術(shù),透徹闡述了平穩(wěn)退化等一批至關(guān)重要的 JavaScript編程原則和最佳實(shí)踐,并全面探討了HTML5以及jQuery等JavaScript庫。

4、《CSS權(quán)威指南(第三版)》,不管你是一個(gè)有經(jīng)驗(yàn)的Web開發(fā)人員還是一個(gè)徹底的初學(xué)者,《CSS權(quán)威指南(第3版)》都是你的CSS學(xué)習(xí)源泉。

5、《JavaScript設(shè)計(jì)模式》,適合JavaScript初學(xué)者、前端設(shè)計(jì)者、JavaScript程序員學(xué)習(xí),也可以作為大專院校相關(guān)專業(yè)師生的學(xué)習(xí)用書,以及培訓(xùn)學(xué)校的教材。

6、《你不知道的JavaScript(上中下卷) 》,本書既適合JavaScript語言初學(xué)者了解其精髓,又適合經(jīng)驗(yàn)豐富的JavaScript開發(fā)人員深入學(xué)習(xí)。

7、《Vue.js權(quán)威指南》,該書內(nèi)容全面,講解細(xì)致,實(shí)例豐富,適用于各層次的開發(fā)者。

學(xué)習(xí)路線:

第1階段:前端頁面重構(gòu)(4周)

內(nèi)容包含了:(PC端網(wǎng)站布局項(xiàng)目、HTML5+CSS3基礎(chǔ)項(xiàng)目、WebApp頁面布局項(xiàng)目)

第2階段:JavaScript高級(jí)程序設(shè)計(jì)(5周)

內(nèi)容包含:(原生JavaScript交互功能開發(fā)項(xiàng)目、面向?qū)ο筮M(jìn)階與ES5/ES6應(yīng)用項(xiàng)目、JavaScript工具庫自主研發(fā)項(xiàng)目)

第3階段:PC端全棧項(xiàng)目開發(fā)(3周)

內(nèi)容包含:(jQuery經(jīng)典交互特效開發(fā)、HTTP協(xié)議、Ajax進(jìn)階與PHP/JAVA開發(fā)項(xiàng)目、前端工程化與模塊化應(yīng)用項(xiàng)目、PC端網(wǎng)站開發(fā)項(xiàng)目、PC端管理信息系統(tǒng)前端開發(fā)項(xiàng)目)

第4階段:移動(dòng)端項(xiàng)目開發(fā)(6周)

內(nèi)容包含:(Touch端項(xiàng)目、微信場(chǎng)景項(xiàng)目、應(yīng)用Angular+Ionic開發(fā)WebApp項(xiàng)目、應(yīng)用Vue.js開發(fā)WebApp項(xiàng)目、應(yīng)用React.js開發(fā)WebApp項(xiàng)目)

第5階段:混合(Hybrid,ReactNative)開發(fā)(1周)

內(nèi)容包含:(微信小程序開發(fā)、ReactNative、各類混合應(yīng)用開發(fā))

第6階段:NodeJS全棧開發(fā)(1周)

內(nèi)容包括:(WebApp后端系統(tǒng)開發(fā)、一、NodeJS基礎(chǔ)與NodeJS核心模塊二、Express三、noSQL數(shù)據(jù)庫)

視頻教程:

網(wǎng)頁鏈接

Redis和Memcached的區(qū)別

Redis的作者Salvatore Sanfilippo曾經(jīng)對(duì)這兩種基于內(nèi)存的數(shù)據(jù)存儲(chǔ)系統(tǒng)進(jìn)行過比較:

1、Redis支持服務(wù)器端的數(shù)據(jù)操作:Redis相比Memcached來說,擁有更多的數(shù)據(jù)結(jié)構(gòu)和并支持更豐富的數(shù)據(jù)操作,通常在Memcached里,你需要將數(shù)據(jù)拿到客戶端來進(jìn)行類似的修改再set回去。這大大增加了網(wǎng)絡(luò)IO的次數(shù)和數(shù)據(jù)體積。在Redis中,這些復(fù)雜的操作通常和一般的GET/SET一樣高效。所以,如果需要緩存能夠支持更復(fù)雜的結(jié)構(gòu)和操作,那么Redis會(huì)是不錯(cuò)的選擇。

2、內(nèi)存使用效率對(duì)比:使用簡(jiǎn)單的key-value存儲(chǔ)的話,Memcached的內(nèi)存利用率更高,而如果Redis采用hash結(jié)構(gòu)來做key-value存儲(chǔ),由于其組合式的壓縮,其內(nèi)存利用率會(huì)高于Memcached。

3、性能對(duì)比:由于Redis只使用單核,而Memcached可以使用多核,所以平均每一個(gè)核上Redis在存儲(chǔ)小數(shù)據(jù)時(shí)比Memcached性能更高。而在100k以上的數(shù)據(jù)中,Memcached性能要高于Redis,雖然Redis最近也在存儲(chǔ)大數(shù)據(jù)的性能上進(jìn)行優(yōu)化,但是比起Memcached,還是稍有遜色。

具體為什么會(huì)出現(xiàn)上面的結(jié)論,以下為收集到的資料:

1、數(shù)據(jù)類型支持不同

與Memcached僅支持簡(jiǎn)單的key-value結(jié)構(gòu)的數(shù)據(jù)記錄不同,Redis支持的數(shù)據(jù)類型要豐富得多。最為常用的數(shù)據(jù)類型主要由五種:String、Hash、List、Set和Sorted Set。Redis內(nèi)部使用一個(gè)redisObject對(duì)象來表示所有的key和value。redisObject最主要的信息如圖所示:

type代表一個(gè)value對(duì)象具體是何種數(shù)據(jù)類型,encoding是不同數(shù)據(jù)類型在redis內(nèi)部的存儲(chǔ)方式,比如:type=string代表value存儲(chǔ)的是一個(gè)普通字符串,那么對(duì)應(yīng)的encoding可以是raw或者是int,如果是int則代表實(shí)際redis內(nèi)部是按數(shù)值型類存儲(chǔ)和表示這個(gè)字符串的,當(dāng)然前提是這個(gè)字符串本身可以用數(shù)值表示,比如:”123″ “456”這樣的字符串。只有打開了Redis的虛擬內(nèi)存功能,vm字段字段才會(huì)真正的分配內(nèi)存,該功能默認(rèn)是關(guān)閉狀態(tài)的。

1)String

常用命令:set/get/decr/incr/mget等;

應(yīng)用場(chǎng)景:String是最常用的一種數(shù)據(jù)類型,普通的key/value存儲(chǔ)都可以歸為此類;

實(shí)現(xiàn)方式:String在redis內(nèi)部存儲(chǔ)默認(rèn)就是一個(gè)字符串,被redisObject所引用,當(dāng)遇到incr、decr等操作時(shí)會(huì)轉(zhuǎn)成數(shù)值型進(jìn)行計(jì)算,此時(shí)redisObject的encoding字段為int。

2)Hash

常用命令:hget/hset/hgetall等

應(yīng)用場(chǎng)景:我們要存儲(chǔ)一個(gè)用戶信息對(duì)象數(shù)據(jù),其中包括用戶ID、用戶姓名、年齡和生日,通過用戶ID我們希望獲取該用戶的姓名或者年齡或者生日;

實(shí)現(xiàn)方式:Redis的Hash實(shí)際是內(nèi)部存儲(chǔ)的Value為一個(gè)HashMap,并提供了直接存取這個(gè)Map成員的接口。如圖所示,Key是用戶ID, value是一個(gè)Map。這個(gè)Map的key是成員的屬性名,value是屬性值。這樣對(duì)數(shù)據(jù)的修改和存取都可以直接通過其內(nèi)部Map的Key(Redis里稱內(nèi)部Map的key為field), 也就是通過 key(用戶ID) + field(屬性標(biāo)簽) 就可以操作對(duì)應(yīng)屬性數(shù)據(jù)。當(dāng)前HashMap的實(shí)現(xiàn)有兩種方式:當(dāng)HashMap的成員比較少時(shí)Redis為了節(jié)省內(nèi)存會(huì)采用類似一維數(shù)組的方式來緊湊存儲(chǔ),而不會(huì)采用真正的HashMap結(jié)構(gòu),這時(shí)對(duì)應(yīng)的value的redisObject的encoding為zipmap,當(dāng)成員數(shù)量增大時(shí)會(huì)自動(dòng)轉(zhuǎn)成真正的HashMap,此時(shí)encoding為ht。

請(qǐng)點(diǎn)擊輸入圖片描述

3)List

常用命令:lpush/rpush/lpop/rpop/lrange等;

應(yīng)用場(chǎng)景:Redis list的應(yīng)用場(chǎng)景非常多,也是Redis最重要的數(shù)據(jù)結(jié)構(gòu)之一,比如twitter的關(guān)注列表,粉絲列表等都可以用Redis的list結(jié)構(gòu)來實(shí)現(xiàn);

實(shí)現(xiàn)方式:Redis list的實(shí)現(xiàn)為一個(gè)雙向鏈表,即可以支持反向查找和遍歷,更方便操作,不過帶來了部分額外的內(nèi)存開銷,Redis內(nèi)部的很多實(shí)現(xiàn),包括發(fā)送緩沖隊(duì)列等也都是用的這個(gè)數(shù)據(jù)結(jié)構(gòu)。

4)Set

常用命令:sadd/spop/smembers/sunion等;

應(yīng)用場(chǎng)景:Redis set對(duì)外提供的功能與list類似是一個(gè)列表的功能,特殊之處在于set是可以自動(dòng)排重的,當(dāng)你需要存儲(chǔ)一個(gè)列表數(shù)據(jù),又不希望出現(xiàn)重復(fù)數(shù)據(jù)時(shí),set是一個(gè)很好的選擇,并且set提供了判斷某個(gè)成員是否在一個(gè)set集合內(nèi)的重要接口,這個(gè)也是list所不能提供的;

實(shí)現(xiàn)方式:set 的內(nèi)部實(shí)現(xiàn)是一個(gè) value永遠(yuǎn)為null的HashMap,實(shí)際就是通過計(jì)算hash的方式來快速排重的,這也是set能提供判斷一個(gè)成員是否在集合內(nèi)的原因。

5)Sorted Set

常用命令:zadd/zrange/zrem/zcard等;

應(yīng)用場(chǎng)景:Redis sorted set的使用場(chǎng)景與set類似,區(qū)別是set不是自動(dòng)有序的,而sorted set可以通過用戶額外提供一個(gè)優(yōu)先級(jí)(score)的參數(shù)來為成員排序,并且是插入有序的,即自動(dòng)排序。當(dāng)你需要一個(gè)有序的并且不重復(fù)的集合列表,那么可以選擇sorted set數(shù)據(jù)結(jié)構(gòu),比如twitter 的public timeline可以以發(fā)表時(shí)間作為score來存儲(chǔ),這樣獲取時(shí)就是自動(dòng)按時(shí)間排好序的。

實(shí)現(xiàn)方式:Redis sorted set的內(nèi)部使用HashMap和跳躍表(SkipList)來保證數(shù)據(jù)的存儲(chǔ)和有序,HashMap里放的是成員到score的映射,而跳躍表里存放的是所有的成員,排序依據(jù)是HashMap里存的score,使用跳躍表的結(jié)構(gòu)可以獲得比較高的查找效率,并且在實(shí)現(xiàn)上比較簡(jiǎn)單。

2、內(nèi)存管理機(jī)制不同

在Redis中,并不是所有的數(shù)據(jù)都一直存儲(chǔ)在內(nèi)存中的。這是和Memcached相比一個(gè)最大的區(qū)別。當(dāng)物理內(nèi)存用完時(shí),Redis可以將一些很久沒用到的value交換到磁盤。Redis只會(huì)緩存所有的key的信息,如果Redis發(fā)現(xiàn)內(nèi)存的使用量超過了某一個(gè)閥值,將觸發(fā)swap的操作,Redis根據(jù)“swappability = age*log(size_in_memory)”計(jì)算出哪些key對(duì)應(yīng)的value需要swap到磁盤。然后再將這些key對(duì)應(yīng)的value持久化到磁盤中,同時(shí)在內(nèi)存中清除。這種特性使得Redis可以保持超過其機(jī)器本身內(nèi)存大小的數(shù)據(jù)。當(dāng)然,機(jī)器本身的內(nèi)存必須要能夠保持所有的key,畢竟這些數(shù)據(jù)是不會(huì)進(jìn)行swap操作的。同時(shí)由于Redis將內(nèi)存中的數(shù)據(jù)swap到磁盤中的時(shí)候,提供服務(wù)的主線程和進(jìn)行swap操作的子線程會(huì)共享這部分內(nèi)存,所以如果更新需要swap的數(shù)據(jù),Redis將阻塞這個(gè)操作,直到子線程完成swap操作后才可以進(jìn)行修改。當(dāng)從Redis中讀取數(shù)據(jù)的時(shí)候,如果讀取的key對(duì)應(yīng)的value不在內(nèi)存中,那么Redis就需要從swap文件中加載相應(yīng)數(shù)據(jù),然后再返回給請(qǐng)求方。 這里就存在一個(gè)I/O線程池的問題。在默認(rèn)的情況下,Redis會(huì)出現(xiàn)阻塞,即完成所有的swap文件加載后才會(huì)相應(yīng)。這種策略在客戶端的數(shù)量較小,進(jìn)行批量操作的時(shí)候比較合適。但是如果將Redis應(yīng)用在一個(gè)大型的網(wǎng)站應(yīng)用程序中,這顯然是無法滿足大并發(fā)的情況的。所以Redis運(yùn)行我們?cè)O(shè)置I/O線程池的大小,對(duì)需要從swap文件中加載相應(yīng)數(shù)據(jù)的讀取請(qǐng)求進(jìn)行并發(fā)操作,減少阻塞的時(shí)間。

對(duì)于像Redis和Memcached這種基于內(nèi)存的數(shù)據(jù)庫系統(tǒng)來說,內(nèi)存管理的效率高低是影響系統(tǒng)性能的關(guān)鍵因素。傳統(tǒng)C語言中的malloc/free函數(shù)是最常用的分配和釋放內(nèi)存的方法,但是這種方法存在著很大的缺陷:首先,對(duì)于開發(fā)人員來說不匹配的malloc和free容易造成內(nèi)存泄露;其次頻繁調(diào)用會(huì)造成大量?jī)?nèi)存碎片無法回收重新利用,降低內(nèi)存利用率;最后作為系統(tǒng)調(diào)用,其系統(tǒng)開銷遠(yuǎn)遠(yuǎn)大于一般函數(shù)調(diào)用。所以,為了提高內(nèi)存的管理效率,高效的內(nèi)存管理方案都不會(huì)直接使用malloc/free調(diào)用。Redis和Memcached均使用了自身設(shè)計(jì)的內(nèi)存管理機(jī)制,但是實(shí)現(xiàn)方法存在很大的差異,下面將會(huì)對(duì)兩者的內(nèi)存管理機(jī)制分別進(jìn)行介紹。

Memcached默認(rèn)使用Slab Allocation機(jī)制管理內(nèi)存,其主要思想是按照預(yù)先規(guī)定的大小,將分配的內(nèi)存分割成特定長(zhǎng)度的塊以存儲(chǔ)相應(yīng)長(zhǎng)度的key-value數(shù)據(jù)記錄,以完全解決內(nèi)存碎片問題。Slab Allocation機(jī)制只為存儲(chǔ)外部數(shù)據(jù)而設(shè)計(jì),也就是說所有的key-value數(shù)據(jù)都存儲(chǔ)在Slab Allocation系統(tǒng)里,而Memcached的其它內(nèi)存請(qǐng)求則通過普通的malloc/free來申請(qǐng),因?yàn)檫@些請(qǐng)求的數(shù)量和頻率決定了它們不會(huì)對(duì)整個(gè)系統(tǒng)的性能造成影響Slab Allocation的原理相當(dāng)簡(jiǎn)單。 如圖所示,它首先從操作系統(tǒng)申請(qǐng)一大塊內(nèi)存,并將其分割成各種尺寸的塊Chunk,并把尺寸相同的塊分成組Slab Class。其中,Chunk就是用來存儲(chǔ)key-value數(shù)據(jù)的最小單位。每個(gè)Slab Class的大小,可以在Memcached啟動(dòng)的時(shí)候通過制定Growth Factor來控制。假定圖中Growth Factor的取值為1.25,如果第一組Chunk的大小為88個(gè)字節(jié),第二組Chunk的大小就為112個(gè)字節(jié),依此類推。

請(qǐng)點(diǎn)擊輸入圖片描述

當(dāng)Memcached接收到客戶端發(fā)送過來的數(shù)據(jù)時(shí)首先會(huì)根據(jù)收到數(shù)據(jù)的大小選擇一個(gè)最合適的Slab Class,然后通過查詢Memcached保存著的該Slab Class內(nèi)空閑Chunk的列表就可以找到一個(gè)可用于存儲(chǔ)數(shù)據(jù)的Chunk。當(dāng)一條數(shù)據(jù)庫過期或者丟棄時(shí),該記錄所占用的Chunk就可以回收,重新添加到空閑列表中。從以上過程我們可以看出Memcached的內(nèi)存管理制效率高,而且不會(huì)造成內(nèi)存碎片,但是它最大的缺點(diǎn)就是會(huì)導(dǎo)致空間浪費(fèi)。因?yàn)槊總€(gè)Chunk都分配了特定長(zhǎng)度的內(nèi)存空間,所以變長(zhǎng)數(shù)據(jù)無法充分利用這些空間。如圖 所示,將100個(gè)字節(jié)的數(shù)據(jù)緩存到128個(gè)字節(jié)的Chunk中,剩余的28個(gè)字節(jié)就浪費(fèi)掉了。

請(qǐng)點(diǎn)擊輸入圖片描述

Redis的內(nèi)存管理主要通過源碼中zmalloc.h和zmalloc.c兩個(gè)文件來實(shí)現(xiàn)的。Redis為了方便內(nèi)存的管理,在分配一塊內(nèi)存之后,會(huì)將這塊內(nèi)存的大小存入內(nèi)存塊的頭部。如圖所示,real_ptr是redis調(diào)用malloc后返回的指針。redis將內(nèi)存塊的大小size存入頭部,size所占據(jù)的內(nèi)存大小是已知的,為size_t類型的長(zhǎng)度,然后返回ret_ptr。當(dāng)需要釋放內(nèi)存的時(shí)候,ret_ptr被傳給內(nèi)存管理程序。通過ret_ptr,程序可以很容易的算出real_ptr的值,然后將real_ptr傳給free釋放內(nèi)存。

請(qǐng)點(diǎn)擊輸入圖片描述

Redis通過定義一個(gè)數(shù)組來記錄所有的內(nèi)存分配情況,這個(gè)數(shù)組的長(zhǎng)度為ZMALLOC_MAX_ALLOC_STAT。數(shù)組的每一個(gè)元素代表當(dāng)前程序所分配的內(nèi)存塊的個(gè)數(shù),且內(nèi)存塊的大小為該元素的下標(biāo)。在源碼中,這個(gè)數(shù)組為zmalloc_allocations。zmalloc_allocations[16]代表已經(jīng)分配的長(zhǎng)度為16bytes的內(nèi)存塊的個(gè)數(shù)。zmalloc.c中有一個(gè)靜態(tài)變量used_memory用來記錄當(dāng)前分配的內(nèi)存總大小。所以,總的來看,Redis采用的是包裝的mallc/free,相較于Memcached的內(nèi)存管理方法來說,要簡(jiǎn)單很多。

3、數(shù)據(jù)持久化支持

Redis雖然是基于內(nèi)存的存儲(chǔ)系統(tǒng),但是它本身是支持內(nèi)存數(shù)據(jù)的持久化的,而且提供兩種主要的持久化策略:RDB快照和AOF日志。而memcached是不支持?jǐn)?shù)據(jù)持久化操作的。

1)RDB快照

Redis支持將當(dāng)前數(shù)據(jù)的快照存成一個(gè)數(shù)據(jù)文件的持久化機(jī)制,即RDB快照。但是一個(gè)持續(xù)寫入的數(shù)據(jù)庫如何生成快照呢?Redis借助了fork命令的copy on write機(jī)制。在生成快照時(shí),將當(dāng)前進(jìn)程fork出一個(gè)子進(jìn)程,然后在子進(jìn)程中循環(huán)所有的數(shù)據(jù),將數(shù)據(jù)寫成為RDB文件。我們可以通過Redis的save指令來配置RDB快照生成的時(shí)機(jī),比如配置10分鐘就生成快照,也可以配置有1000次寫入就生成快照,也可以多個(gè)規(guī)則一起實(shí)施。這些規(guī)則的定義就在Redis的配置文件中,你也可以通過Redis的CONFIG SET命令在Redis運(yùn)行時(shí)設(shè)置規(guī)則,不需要重啟Redis。

Redis的RDB文件不會(huì)壞掉,因?yàn)槠鋵懖僮魇窃谝粋€(gè)新進(jìn)程中進(jìn)行的,當(dāng)生成一個(gè)新的RDB文件時(shí),Redis生成的子進(jìn)程會(huì)先將數(shù)據(jù)寫到一個(gè)臨時(shí)文件中,然后通過原子性rename系統(tǒng)調(diào)用將臨時(shí)文件重命名為RDB文件,這樣在任何時(shí)候出現(xiàn)故障,Redis的RDB文件都總是可用的。同時(shí),Redis的RDB文件也是Redis主從同步內(nèi)部實(shí)現(xiàn)中的一環(huán)。RDB有他的不足,就是一旦數(shù)據(jù)庫出現(xiàn)問題,那么我們的RDB文件中保存的數(shù)據(jù)并不是全新的,從上次RDB文件生成到Redis停機(jī)這段時(shí)間的數(shù)據(jù)全部丟掉了。在某些業(yè)務(wù)下,這是可以忍受的。

2)AOF日志

AOF日志的全稱是append only file,它是一個(gè)追加寫入的日志文件。與一般數(shù)據(jù)庫的binlog不同的是,AOF文件是可識(shí)別的純文本,它的內(nèi)容就是一個(gè)個(gè)的Redis標(biāo)準(zhǔn)命令。只有那些會(huì)導(dǎo)致數(shù)據(jù)發(fā)生修改的命令才會(huì)追加到AOF文件。每一條修改數(shù)據(jù)的命令都生成一條日志,AOF文件會(huì)越來越大,所以Redis又提供了一個(gè)功能,叫做AOF rewrite。其功能就是重新生成一份AOF文件,新的AOF文件中一條記錄的操作只會(huì)有一次,而不像一份老文件那樣,可能記錄了對(duì)同一個(gè)值的多次操作。其生成過程和RDB類似,也是fork一個(gè)進(jìn)程,直接遍歷數(shù)據(jù),寫入新的AOF臨時(shí)文件。在寫入新文件的過程中,所有的寫操作日志還是會(huì)寫到原來老的AOF文件中,同時(shí)還會(huì)記錄在內(nèi)存緩沖區(qū)中。當(dāng)重完操作完成后,會(huì)將所有緩沖區(qū)中的日志一次性寫入到臨時(shí)文件中。然后調(diào)用原子性的rename命令用新的AOF文件取代老的AOF文件。

AOF是一個(gè)寫文件操作,其目的是將操作日志寫到磁盤上,所以它也同樣會(huì)遇到我們上面說的寫操作的流程。在Redis中對(duì)AOF調(diào)用write寫入后,通過appendfsync選項(xiàng)來控制調(diào)用fsync將其寫到磁盤上的時(shí)間,下面appendfsync的三個(gè)設(shè)置項(xiàng),安全強(qiáng)度逐漸變強(qiáng)。

appendfsync no 當(dāng)設(shè)置appendfsync為no的時(shí)候,Redis不會(huì)主動(dòng)調(diào)用fsync去將AOF日志內(nèi)容同步到磁盤,所以這一切就完全依賴于操作系統(tǒng)的調(diào)試了。對(duì)大多數(shù)Linux操作系統(tǒng),是每30秒進(jìn)行一次fsync,將緩沖區(qū)中的數(shù)據(jù)寫到磁盤上。

appendfsync everysec 當(dāng)設(shè)置appendfsync為everysec的時(shí)候,Redis會(huì)默認(rèn)每隔一秒進(jìn)行一次fsync調(diào)用,將緩沖區(qū)中的數(shù)據(jù)寫到磁盤。但是當(dāng)這一次的fsync調(diào)用時(shí)長(zhǎng)超過1秒時(shí)。Redis會(huì)采取延遲fsync的策略,再等一秒鐘。也就是在兩秒后再進(jìn)行fsync,這一次的fsync就不管會(huì)執(zhí)行多長(zhǎng)時(shí)間都會(huì)進(jìn)行。這時(shí)候由于在fsync時(shí)文件描述符會(huì)被阻塞,所以當(dāng)前的寫操作就會(huì)阻塞。所以結(jié)論就是,在絕大多數(shù)情況下,Redis會(huì)每隔一秒進(jìn)行一次fsync。在最壞的情況下,兩秒鐘會(huì)進(jìn)行一次fsync操作。這一操作在大多數(shù)數(shù)據(jù)庫系統(tǒng)中被稱為group commit,就是組合多次寫操作的數(shù)據(jù),一次性將日志寫到磁盤。

appednfsync always 當(dāng)設(shè)置appendfsync為always時(shí),每一次寫操作都會(huì)調(diào)用一次fsync,這時(shí)數(shù)據(jù)是最安全的,當(dāng)然,由于每次都會(huì)執(zhí)行fsync,所以其性能也會(huì)受到影響。

對(duì)于一般性的業(yè)務(wù)需求,建議使用RDB的方式進(jìn)行持久化,原因是RDB的開銷并相比AOF日志要低很多,對(duì)于那些無法忍數(shù)據(jù)丟失的應(yīng)用,建議使用AOF日志。

4、集群管理的不同

Memcached是全內(nèi)存的數(shù)據(jù)緩沖系統(tǒng),Redis雖然支持?jǐn)?shù)據(jù)的持久化,但是全內(nèi)存畢竟才是其高性能的本質(zhì)。作為基于內(nèi)存的存儲(chǔ)系統(tǒng)來說,機(jī)器物理內(nèi)存的大小就是系統(tǒng)能夠容納的最大數(shù)據(jù)量。如果需要處理的數(shù)據(jù)量超過了單臺(tái)機(jī)器的物理內(nèi)存大小,就需要構(gòu)建分布式集群來擴(kuò)展存儲(chǔ)能力。

Memcached本身并不支持分布式,因此只能在客戶端通過像一致性哈希這樣的分布式算法來實(shí)現(xiàn)Memcached的分布式存儲(chǔ)。下圖給出了Memcached的分布式存儲(chǔ)實(shí)現(xiàn)架構(gòu)。當(dāng)客戶端向Memcached集群發(fā)送數(shù)據(jù)之前,首先會(huì)通過內(nèi)置的分布式算法計(jì)算出該條數(shù)據(jù)的目標(biāo)節(jié)點(diǎn),然后數(shù)據(jù)會(huì)直接發(fā)送到該節(jié)點(diǎn)上存儲(chǔ)。但客戶端查詢數(shù)據(jù)時(shí),同樣要計(jì)算出查詢數(shù)據(jù)所在的節(jié)點(diǎn),然后直接向該節(jié)點(diǎn)發(fā)送查詢請(qǐng)求以獲取數(shù)據(jù)。

請(qǐng)點(diǎn)擊輸入圖片描述

相較于Memcached只能采用客戶端實(shí)現(xiàn)分布式存儲(chǔ),Redis更偏向于在服務(wù)器端構(gòu)建分布式存儲(chǔ)。最新版本的Redis已經(jīng)支持了分布式存儲(chǔ)功能。Redis Cluster是一個(gè)實(shí)現(xiàn)了分布式且允許單點(diǎn)故障的Redis高級(jí)版本,它沒有中心節(jié)點(diǎn),具有線性可伸縮的功能。下圖給出Redis Cluster的分布式存儲(chǔ)架構(gòu),其中節(jié)點(diǎn)與節(jié)點(diǎn)之間通過二進(jìn)制協(xié)議進(jìn)行通信,節(jié)點(diǎn)與客戶端之間通過ascii協(xié)議進(jìn)行通信。在數(shù)據(jù)的放置策略上,Redis Cluster將整個(gè)key的數(shù)值域分成4096個(gè)哈希槽,每個(gè)節(jié)點(diǎn)上可以存儲(chǔ)一個(gè)或多個(gè)哈希槽,也就是說當(dāng)前Redis Cluster支持的最大節(jié)點(diǎn)數(shù)就是4096。Redis Cluster使用的分布式算法也很簡(jiǎn)單:crc16( key ) % HASH_SLOTS_NUMBER。

請(qǐng)點(diǎn)擊輸入圖片描述

為了保證單點(diǎn)故障下的數(shù)據(jù)可用性,Redis Cluster引入了Master節(jié)點(diǎn)和Slave節(jié)點(diǎn)。在Redis Cluster中,每個(gè)Master節(jié)點(diǎn)都會(huì)有對(duì)應(yīng)的兩個(gè)用于冗余的Slave節(jié)點(diǎn)。這樣在整個(gè)集群中,任意兩個(gè)節(jié)點(diǎn)的宕機(jī)都不會(huì)導(dǎo)致數(shù)據(jù)的不可用。當(dāng)Master節(jié)點(diǎn)退出后,集群會(huì)自動(dòng)選擇一個(gè)Slave節(jié)點(diǎn)成為新的Master節(jié)點(diǎn)。

請(qǐng)點(diǎn)擊輸入圖片描述


本文標(biāo)題:nosql圖片,nosql 圖數(shù)據(jù)庫
新聞來源:http://weahome.cn/article/dsehjse.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部