新聞中心
如何評估數(shù)據(jù)適不適合放入Redis中?
如何評估數(shù)據(jù)適不適合放入Redis中?這個(gè)好像都不怎么用評估,在互聯(lián)網(wǎng)公司待了好幾年,行不行放進(jìn)去試試就行,工作這幾年時(shí)間,還沒有見過不能放入Redis的數(shù)據(jù)場景。下面就以個(gè)人的經(jīng)歷,簡單分享一些特殊的數(shù)據(jù)場景和使用過程中的問題,娛樂為主,甄別借鑒。

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、成都網(wǎng)站建設(shè)、武侯網(wǎng)絡(luò)推廣、小程序開發(fā)、武侯網(wǎng)絡(luò)營銷、武侯企業(yè)策劃、武侯品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供武侯建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
在負(fù)責(zé)前臺業(yè)務(wù)時(shí),配置數(shù)據(jù)是一種很典型的數(shù)據(jù)場景,如 APP 首頁所加載的輪播圖、ICON跳轉(zhuǎn)信息等,這些數(shù)據(jù)屬于典型的低頻變更、高頻訪問型數(shù)據(jù),面向所有用戶請求響應(yīng),產(chǎn)品運(yùn)營在配置后臺變更。我負(fù)責(zé)的業(yè)務(wù)本身訪問量也不高,PV 110w,UV 80,峰值QPS 200+,處理方案是被動配置信息緩存,緩存時(shí)間為 5 min,產(chǎn)品運(yùn)營配置的數(shù)據(jù)最悲觀的情況下 5 min生效,產(chǎn)品側(cè)接受,研發(fā)側(cè)實(shí)現(xiàn)簡單。但在維護(hù)過程中,發(fā)現(xiàn) redis 的 key 生成規(guī)則中有當(dāng)前時(shí)間因子,導(dǎo)致該配置信息緩存永遠(yuǎn)都取不到,這種低級錯(cuò)誤讀者感覺別出心裁,也很不容易定位。幸好我們的業(yè)務(wù)并發(fā)并不高,要不然數(shù)據(jù)庫壓力就夠嗆了。
在維護(hù)頁面型業(yè)務(wù)時(shí),發(fā)現(xiàn)該業(yè)務(wù)的整個(gè)頁面進(jìn)行了緩存,定時(shí)調(diào)度每分鐘拉群上游數(shù)據(jù),結(jié)合本地 vm 模板進(jìn)行渲染,然后將選擇結(jié)果放入 redis,當(dāng)有用戶請求時(shí),直接返回該渲染完成的頁面html,起到快速響應(yīng)的目的。這種快速響應(yīng)用戶請求優(yōu)化的方式,第一次見到,很有借鑒意義,頁面的響應(yīng)優(yōu)化方面可以考慮的層面又多了一些方式。
還有一種高性能的業(yè)務(wù)場景,業(yè)務(wù) QPS 10w+,這種請求并發(fā),關(guān)系型數(shù)據(jù)庫往往無能為力,曾經(jīng)歷過以 redis 為中心,搭建整個(gè)應(yīng)用體系,用戶型數(shù)據(jù)永久存儲,為保證數(shù)據(jù)的準(zhǔn)備性,異步消息隊(duì)列消費(fèi)入庫,數(shù)據(jù)庫中數(shù)據(jù)主要用作維護(hù)和數(shù)據(jù)備份。所有的請求都由 redis 反饋結(jié)果,redis中無數(shù)據(jù),就表明該用戶數(shù)據(jù)不存在,這種架構(gòu)可以輕松支撐起 10w+ 的QPS。但也不是沒有問題的,運(yùn)營的久了,往往會出現(xiàn)數(shù)據(jù)庫和緩存的數(shù)據(jù)不一致的情況,這種時(shí)候就考慮結(jié)合數(shù)據(jù)庫中數(shù)據(jù),對緩存中數(shù)據(jù)進(jìn)行清洗和補(bǔ)償。
以上,僅是職業(yè)生涯遇到的一些特殊場景,處理方案或許不那么完美,但也足夠支撐業(yè)務(wù)。在開發(fā)中,著力追求技術(shù)方案完美值得肯定,但也盡量避免過度設(shè)計(jì)。在當(dāng)下這個(gè)迭代速度超快的業(yè)務(wù)和技術(shù)場景中,能夠支撐業(yè)務(wù)發(fā)展就是一種好的架構(gòu)設(shè)計(jì)。
作者:夕陽雨晴,歡迎關(guān)注我的頭條號:偶爾美文,主流Java,為你講述不一樣的碼農(nóng)生活。
判斷數(shù)據(jù)是否放入Redis的方法,我說下自己的理解。
Redis的特點(diǎn)是內(nèi)存存儲,所以它主要適合的是獨(dú)立、速度快、適合頻繁訪問/修改、常作為快速緩存替代SQL。
什么樣的數(shù)據(jù)適合放入Redis中呢?這里沒必要扯什么數(shù)據(jù)類型、什么業(yè)務(wù)等等虛的概念。從它的特點(diǎn)中能看出,所有不適合把數(shù)據(jù)放入SQL數(shù)據(jù)庫、同時(shí)又不方便本地緩沖的場景數(shù)據(jù),都適合放入Redis中。
因此,如果目標(biāo)數(shù)據(jù)既需要高速緩存,又需要獨(dú)立存在于程序之外:比如防止服務(wù)重啟(包括且不限于升級、錯(cuò)誤、重啟)等造成數(shù)據(jù)丟失,或者多個(gè)服務(wù)共享此數(shù)據(jù),這時(shí)就可以放入Redis中。因?yàn)镽edis的穩(wěn)定性是可期的,同時(shí)網(wǎng)絡(luò)接口又允許多個(gè)服務(wù)器同時(shí)訪問。
因此所有要求使用Redis的場景,都有重要的特征,即高速和獨(dú)立存儲。基于這個(gè)需求,創(chuàng)造出來的業(yè)務(wù)概念即哪些所謂的 熱點(diǎn)業(yè)務(wù)數(shù)據(jù)、高速數(shù)據(jù)鏡像、共享緩存等等,也就好理解了。
下圖就是實(shí)際業(yè)務(wù)中的一種場景,即為了幫SQL抗流量。重復(fù)的查詢和快速的更新由Redis抗下,而SQL只做持久化。
希望能幫到有類似問題的朋友。朋友們,望不吝賜贊?。?/p>
非常有興趣回答這個(gè)問題。
Redis是目前最為流行的分布式緩存的解決方案,其憑借其出色的性能深受大家的歡迎。雖然Redis自身也提供了發(fā)布/訂閱相應(yīng)的功能,不過相對緩存來說,受歡迎程度就不那么高了。接下來,我來回答題主問題,說明樣的數(shù)據(jù)適合放入Redis中(可以延伸到:何種類型的數(shù)據(jù)適合進(jìn)行緩存處理)。
一、靜態(tài)數(shù)據(jù)
最常見的就是各種參數(shù)、字典,這類數(shù)據(jù)往往在維護(hù)后數(shù)據(jù)量就恒定了,而且在系統(tǒng)運(yùn)行過程中基本都是查詢類型的操作。
在緩存算法方面,因?yàn)槠鋽?shù)據(jù)量比較固定,而且不需要有過期的設(shè)定,所以這類數(shù)據(jù)不需要對其緩存算法(FIFO/LFU/LRU)有過多的要求,存下來就可以了。
在緩存策略方面,通常會選擇Cache-Aside作為這類數(shù)據(jù)的緩存策略,應(yīng)用有限讀取緩存中的數(shù)據(jù),如果數(shù)據(jù)不存在則從數(shù)據(jù)庫中進(jìn)行讀取,讀取后同步到緩存當(dāng)中(在應(yīng)用程序中通常會通過面向切面的方式來實(shí)現(xiàn))。但是Cache-Aside并不能確保緩存和數(shù)據(jù)庫的一致性(AB線程在查詢數(shù)據(jù)庫時(shí)數(shù)據(jù)發(fā)生了改變,導(dǎo)致A線程拿到的是a數(shù)據(jù),B線程拿到的是b數(shù)據(jù),那么很難保證AB線程最后put到緩存中的數(shù)據(jù)是最后更新的數(shù)據(jù))。此外,通常會在應(yīng)用啟動時(shí)或提供人工操作的功能進(jìn)行緩存預(yù)熱,來防止緩存穿透。
二、臨時(shí)數(shù)據(jù)
這一類數(shù)據(jù)最大的特點(diǎn)是時(shí)效性很強(qiáng),并且不需要進(jìn)行持久化。我們常見的Session、Token、以及各種驗(yàn)證碼等。
在緩存算法方面,沒有過多要求(緩存算法基本都是在空間恒定的情況下并且有優(yōu)先順序才會討論的),但是需要考慮Redis分配內(nèi)存的大小,必要時(shí)可以考慮持久化或者限流。
會話緩存
Redis最明顯的用例之一是將其用作會話緩存。與其他會話存儲(例如Memcached)相比,使用Redis的優(yōu)勢在于Redis提供了持久性。盡管就一致性而言,維護(hù)高速緩存通常不是關(guān)鍵任務(wù),但如果所有購物車會話都消失了,大多數(shù)用戶將不會完全滿意,現(xiàn)在他們會嗎?
幸運(yùn)的是,隨著Redis多年來的發(fā)展,很容易找到有關(guān)如何正確使用Redis進(jìn)行會話緩存的文檔。甚至著名的電子商務(wù)平臺Magento都有Redis的插件!
在基本會話令牌之外,Redis提供了一個(gè)非常易于操作的FPC平臺。即使在重新啟動Redis實(shí)例時(shí),也可以恢復(fù)一致性,而磁盤持久性不會使用戶看到頁面加載速度的降低,這是非常麻煩的從類似PHP的本地FPC更改。
再次以Magento為例,Magento提供了一個(gè)插件,可將Redis用作全頁緩存后端。
同樣,對于在那里的WordPress用戶,WordPress有一個(gè)名為wp-redis的超贊插件,可幫助您實(shí)現(xiàn)前所未有的最快頁面加載速度!
利用Redis的內(nèi)存存儲引擎來執(zhí)行列表和設(shè)置操作,使其成為用于消息隊(duì)列的絕佳平臺。對于習(xí)慣使用Redis進(jìn)行推入/彈出操作與Python等編程語言中的列表進(jìn)行交互的人,應(yīng)該感到與Redis作為隊(duì)列進(jìn)行交互。
如果您對“ Redis隊(duì)列”進(jìn)行快速的Google搜索,您很快就會發(fā)現(xiàn)那里有大量的開源項(xiàng)目,這些項(xiàng)目旨在使Redis成為滿足所有排隊(duì)需求的出色后端實(shí)用程序。舉例來說,Celery的后端就是使用Redis作為代理。
還有就是Redis的發(fā)布/訂閱功能。Pub / Sub的用例確實(shí)是無限的。我見過人們將其用于社交網(wǎng)絡(luò)連接,基于Pub / Sub事件觸發(fā)腳本,甚至使用Redis Pub / Sub構(gòu)建的聊天系統(tǒng)!
非關(guān)系型數(shù)據(jù)庫Mongodb和Hbase的區(qū)別?
1、Mongodb是文檔型數(shù)據(jù)庫,hbase是列式數(shù)據(jù)庫;
2、Mongodb 主鍵是“_id”,hbase的主鍵就是row key;
3、Mongodb支持二級索引,而hbase本身不支持二級索引;
4、Mongodb支持集合查找,正則查找,范圍查找,支持skip和limit等等,是最像mysql的nosql數(shù)據(jù)庫,而hbase只支持三種查找:通過單個(gè)row key訪問,通過row key的range,全表掃描;
到此,以上就是小編對于mongodb 條件查詢的問題就介紹到這了,希望這2點(diǎn)解答對大家有用。
本文標(biāo)題:如何評估數(shù)據(jù)適不適合放入Redis中?(mongodb如何帶條件查詢)
本文鏈接:http://fisionsoft.com.cn/article/copjehh.html


咨詢
建站咨詢
