新聞中心
如何評(píng)估數(shù)據(jù)適不適合放入Redis中?
會(huì)話緩存

Redis最明顯的用例之一是將其用作會(huì)話緩存。與其他會(huì)話存儲(chǔ)(例如Memcached)相比,使用Redis的優(yōu)勢(shì)在于Redis提供了持久性。盡管就一致性而言,維護(hù)高速緩存通常不是關(guān)鍵任務(wù),但如果所有購(gòu)物車會(huì)話都消失了,大多數(shù)用戶將不會(huì)完全滿意,現(xiàn)在他們會(huì)嗎?
幸運(yùn)的是,隨著Redis多年來的發(fā)展,很容易找到有關(guān)如何正確使用Redis進(jìn)行會(huì)話緩存的文檔。甚至著名的電子商務(wù)平臺(tái)Magento都有Redis的插件!
在基本會(huì)話令牌之外,Redis提供了一個(gè)非常易于操作的FPC平臺(tái)。即使在重新啟動(dòng)Redis實(shí)例時(shí),也可以恢復(fù)一致性,而磁盤持久性不會(huì)使用戶看到頁(yè)面加載速度的降低,這是非常麻煩的從類似PHP的本地FPC更改。
再次以Magento為例,Magento提供了一個(gè)插件,可將Redis用作全頁(yè)緩存后端。
同樣,對(duì)于在那里的WordPress用戶,WordPress有一個(gè)名為wp-redis的超贊插件,可幫助您實(shí)現(xiàn)前所未有的最快頁(yè)面加載速度!
利用Redis的內(nèi)存存儲(chǔ)引擎來執(zhí)行列表和設(shè)置操作,使其成為用于消息隊(duì)列的絕佳平臺(tái)。對(duì)于習(xí)慣使用Redis進(jìn)行推入/彈出操作與Python等編程語(yǔ)言中的列表進(jìn)行交互的人,應(yīng)該感到與Redis作為隊(duì)列進(jìn)行交互。
如果您對(duì)“ Redis隊(duì)列”進(jìn)行快速的Google搜索,您很快就會(huì)發(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)!
1:字典,配置類型的數(shù)據(jù),因?yàn)楦骂l率很低,如果這類型數(shù)據(jù)調(diào)用量比較大的話,適合放到redis
2:熱點(diǎn)數(shù)據(jù),就是每天調(diào)用量很大的數(shù)據(jù),而且更新頻率不是很大,適合放到redis
3:雖然有些業(yè)務(wù)數(shù)據(jù),每日調(diào)用量比較大,但是查詢和處理邏輯復(fù)雜,這類數(shù)據(jù)不適合放到redis
4:基礎(chǔ)數(shù)據(jù)量比較大,有多個(gè)維度的查詢,不適合放到redis
5:對(duì)調(diào)用數(shù)據(jù)不確定使用頻率怎樣的,不適合放到redis
判斷數(shù)據(jù)是否放入Redis的方法,我說下自己的理解。
Redis的特點(diǎn)是內(nèi)存存儲(chǔ),所以它主要適合的是獨(dú)立、速度快、適合頻繁訪問/修改、常作為快速緩存替代SQL。
什么樣的數(shù)據(jù)適合放入Redis中呢?這里沒必要扯什么數(shù)據(jù)類型、什么業(yè)務(wù)等等虛的概念。從它的特點(diǎn)中能看出,所有不適合把數(shù)據(jù)放入SQL數(shù)據(jù)庫(kù)、同時(shí)又不方便本地緩沖的場(chǎng)景數(shù)據(jù),都適合放入Redis中。
因此,如果目標(biāo)數(shù)據(jù)既需要高速緩存,又需要獨(dú)立存在于程序之外:比如防止服務(wù)重啟(包括且不限于升級(jí)、錯(cuò)誤、重啟)等造成數(shù)據(jù)丟失,或者多個(gè)服務(wù)共享此數(shù)據(jù),這時(shí)就可以放入Redis中。因?yàn)镽edis的穩(wěn)定性是可期的,同時(shí)網(wǎng)絡(luò)接口又允許多個(gè)服務(wù)器同時(shí)訪問。
因此所有要求使用Redis的場(chǎng)景,都有重要的特征,即高速和獨(dú)立存儲(chǔ)?;谶@個(gè)需求,創(chuàng)造出來的業(yè)務(wù)概念即哪些所謂的 熱點(diǎn)業(yè)務(wù)數(shù)據(jù)、高速數(shù)據(jù)鏡像、共享緩存等等,也就好理解了。
下圖就是實(shí)際業(yè)務(wù)中的一種場(chǎng)景,即為了幫SQL抗流量。重復(fù)的查詢和快速的更新由Redis抗下,而SQL只做持久化。
希望能幫到有類似問題的朋友。朋友們,望不吝賜贊啊!
非常有興趣回答這個(gè)問題。
Redis是目前最為流行的分布式緩存的解決方案,其憑借其出色的性能深受大家的歡迎。雖然Redis自身也提供了發(fā)布/訂閱相應(yīng)的功能,不過相對(duì)緩存來說,受歡迎程度就不那么高了。接下來,我來回答題主問題,說明樣的數(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ù)不需要對(duì)其緩存算法(FIFO/LFU/LRU)有過多的要求,存下來就可以了。
在緩存策略方面,通常會(huì)選擇Cache-Aside作為這類數(shù)據(jù)的緩存策略,應(yīng)用有限讀取緩存中的數(shù)據(jù),如果數(shù)據(jù)不存在則從數(shù)據(jù)庫(kù)中進(jìn)行讀取,讀取后同步到緩存當(dāng)中(在應(yīng)用程序中通常會(huì)通過面向切面的方式來實(shí)現(xiàn))。但是Cache-Aside并不能確保緩存和數(shù)據(jù)庫(kù)的一致性(AB線程在查詢數(shù)據(jù)庫(kù)時(shí)數(shù)據(jù)發(fā)生了改變,導(dǎo)致A線程拿到的是a數(shù)據(jù),B線程拿到的是b數(shù)據(jù),那么很難保證AB線程最后put到緩存中的數(shù)據(jù)是最后更新的數(shù)據(jù))。此外,通常會(huì)在應(yīng)用啟動(dòng)時(shí)或提供人工操作的功能進(jìn)行緩存預(yù)熱,來防止緩存穿透。
二、臨時(shí)數(shù)據(jù)
這一類數(shù)據(jù)最大的特點(diǎn)是時(shí)效性很強(qiáng),并且不需要進(jìn)行持久化。我們常見的Session、Token、以及各種驗(yàn)證碼等。
在緩存算法方面,沒有過多要求(緩存算法基本都是在空間恒定的情況下并且有優(yōu)先順序才會(huì)討論的),但是需要考慮Redis分配內(nèi)存的大小,必要時(shí)可以考慮持久化或者限流。
到此,以上就是小編對(duì)于redis如何查看數(shù)據(jù)的問題就介紹到這了,希望這1點(diǎn)解答對(duì)大家有用。
當(dāng)前題目:redis怎么查看記錄數(shù)
網(wǎng)站地址:http://m.fisionsoft.com.cn/article/djojdei.html


咨詢
建站咨詢
