天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

NoSQL架構(gòu)實踐(三)——以NoSQL為緩存

  在《NoSQL架構(gòu)實踐》系列的前面兩篇文章中,介紹了《以NoSQL為主》和《以NoSQL為輔》的架構(gòu)。由于NoSQL數(shù)據(jù)庫天生具有高性能、易擴展的特點,所以我們常常結(jié)合關(guān)系數(shù)據(jù)庫,存儲一些高性能的、海量的數(shù)據(jù)。從另外一個角度看,根據(jù)NoSQL的高性能特點,它同樣適合用于緩存數(shù)據(jù)。用NoSQL緩存數(shù)據(jù)可以分為內(nèi)存模式和磁盤持久化模式。

  內(nèi)存模式

  說起內(nèi)存模式緩存,我們自然就會想起大名鼎鼎的Memcached。在互聯(lián)網(wǎng)發(fā)展過程中,Memcached曾經(jīng)解救了數(shù)據(jù)庫的大部分壓力,做出了巨大的貢獻,直到今天,它依然是緩存服務(wù)器的首選。Memcached的常見使用方式類似下面的代碼:

  Memcached提供了相當(dāng)高的讀寫性能,一般情況下,都足夠應(yīng)付應(yīng)用的性能要求。但是基于內(nèi)存的Memcached緩存的總數(shù)據(jù)大小受限于內(nèi)存的大小。

  當(dāng)前如日中天、討論得異常火熱的NoSQL數(shù)據(jù)庫Redis又為我們提供了功能更加強大的內(nèi)存存儲功能。跟Memcached比,Redis的一個key的可以存儲多種數(shù)據(jù)結(jié)構(gòu)Strings、Hashes、Lists、Sets、Sorted sets。Redis不但功能強大,而且它的性能完全超越大名鼎鼎的Memcached。Redis支持List、hashes等多種數(shù)據(jù)結(jié)構(gòu)的功能,提供了更加易于使用的api和操作性能,比如對緩存的list數(shù)據(jù)的修改。

  同樣,其他一些NoSQL數(shù)據(jù)庫也提供了內(nèi)存存儲的功能,所以也適合用來做內(nèi)存緩存。比如Tokyo Tyrant就提供了內(nèi)存hash數(shù)據(jù)庫、內(nèi)存tree數(shù)據(jù)庫功能,內(nèi)存tree數(shù)據(jù)可根據(jù)key的順序進行遍歷。你可以通過使用其提供的兼容Memcached協(xié)議或自定義的協(xié)議來使用。

  持久化模式

  雖然基于內(nèi)存的緩存服務(wù)器具有高性能,低延遲的特點,但是內(nèi)存成本高、內(nèi)存數(shù)據(jù)易失卻不容忽視。幾十GB內(nèi)存的服務(wù)器,在很多公司看來,還比較奢侈。所以,我們應(yīng)該根據(jù)應(yīng)用的特點,盡量的提高內(nèi)存的利用率,降低成本。

  大部分互聯(lián)網(wǎng)應(yīng)用的特點都是數(shù)據(jù)訪問有熱點,也就是說,只有一部分?jǐn)?shù)據(jù)是被頻繁訪問的。如果全部都cache到內(nèi)存中,無疑是對內(nèi)存的浪費。

  這時,我們可以利用NoSQL來做數(shù)據(jù)的緩存。其實NoSQL數(shù)據(jù)庫內(nèi)部也是通過內(nèi)存緩存來提高性能的,通過一些比較好的算法,把熱點數(shù)據(jù)進行內(nèi)存cache,非熱點數(shù)據(jù)存儲到磁盤以節(jié)省內(nèi)存占用。由于其數(shù)據(jù)庫結(jié)構(gòu)的簡單,從磁盤獲取一次數(shù) 據(jù)也比從數(shù)據(jù)庫一次耗時的查詢劃算很多。用NoSQL數(shù)據(jù)庫做緩存服務(wù)器不但具有不錯的性能。而且還能夠Cache比內(nèi)存大的數(shù)據(jù)。

  使用NoSQL來做緩存,由于其不受內(nèi)存大小的限制,我們可以把一些不常訪問、不怎么更新的數(shù)據(jù)也緩存起來。比如論壇、新聞的老數(shù)據(jù)、數(shù)據(jù)列表的靠后的頁面,雖然用戶訪問不多,但是搜索引擎爬蟲會訪問,也可能導(dǎo)致系統(tǒng)負(fù)載上升。

  如果NoSQL持久化緩存也使用類似基于內(nèi)存的memcached設(shè)置過期時間的方式,那么持久化緩存就失去了意義。所以用NoSQL做緩存的過期策略最好不使用時間過期,而是數(shù)據(jù)是否被更新過,如果數(shù)據(jù)沒有更新,那么就永久不過期。下面我們用代碼(php)演示一種實現(xiàn)這種策略的方法:

  場景:新聞?wù)军c的評論系統(tǒng)。用戶對新聞頁面的url進行評論,然后根據(jù)url進行查詢展示。

  我把上面代碼演示的緩存使用方式稱為基于版本的緩存。這種方式同樣適用于基于內(nèi)存的Memcached。它能實現(xiàn)緩存數(shù)據(jù)的實時性,讓用戶感覺不到延遲。只要用戶一發(fā)表評論,該新聞的評論緩存就會失效。用戶很少去評論一些過時的新聞,那么緩存就一直存在于NoSQL中,避免了爬蟲訪問過時新聞的評論數(shù)據(jù)而沖擊數(shù)據(jù)庫。

  總結(jié)

  目前國內(nèi)的新浪微博已經(jīng)在大量的使用Redis緩存數(shù)據(jù),趕集網(wǎng)也在大量的使用Redis。Redis作為一些List,Hashes等數(shù)據(jù)結(jié)構(gòu)的緩存,非常適合。

  把NoSQL當(dāng)持久化Cache使用的模式,在很多大數(shù)據(jù)量、有熱點、查詢非熱點數(shù)據(jù)比較消耗資源的場景下比較有用。

  NoSQL架構(gòu)實踐總結(jié)

  到這里,關(guān)于NoSQL架構(gòu)實踐的三篇文章就結(jié)束了。NoSQL架構(gòu)并不局限于我介紹的三種模式,他們之間也可以進行組合,應(yīng)該根據(jù)你具體的應(yīng)用場景靈活使用。不管是什么模式,都是為了解決我們的問題而出現(xiàn)的,所以在系統(tǒng)架構(gòu)的時候,要問下自己,我為什么要用NoSQL;在對NoSQL架構(gòu)模式選型的時候,要問下自己,我為什么要這么用NoSQL。

  參考鏈接:

it知識庫NoSQL架構(gòu)實踐(三)——以NoSQL為緩存,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 好男人视频免费高清在线观看www | 国产午夜精品久久理论片小说 | 久久99r66热这里有精品 | ewp系列虐杀在线视频 | 1788福利视频在视频线 | 亚洲色婷婷久久精品AV蜜桃 | 无码任你躁久久久久久老妇双奶 | 尤物99久久久合集一区区 | 国内精品视频一区二区在线观看 | 伧理片午夜伧理片 | 91亚洲精品福利在线播放 | 午夜国产精品影院在线观看 | 色狠狠xx| 久久婷婷五月综合色丁香花 | 国产真实强被迫伦姧女在线观看 | 国产线精品视频在线观看 | 亚洲青青草原 | 欧美一区二区在线观看 | 国产无遮挡无码视频在线观看不卡 | www.亚洲天堂 | 男女午夜性爽快免费视频不卡 | 国产AV无码成人黄网站免费 | 暖暖视频中国在线观看免费韩国 | 国自产精品手机在线视频 | 日韩影院久久 | 色多多深夜福利免费观看 | 天堂网久久| 麻豆精品人妻一区二区三区蜜桃 | 中文在线观看免费网站 | 国产曰韩无码亚洲视频 | 国产精品18久久久久久欧美网址 | 亚洲成人网导航 | 日本肉肉口番工全彩动漫 | 少妇人妻偷人精品视蜜桃 | 无码日本亚洲一区久久精品 | 国产精品久久久久久久伊一 | 性欧美video另类hd高清 | 免费的av不用播放器的 | 97亚洲狠狠色综合久久久久 | 国产成人精品男人的天堂网站 | AV午夜午夜快憣免费观看 |