虹科分享 | 妙招頻出,Redis 企業(yè)版這樣解決緩存問(wèn)題

為什么企業(yè)需要數(shù)字化?
數(shù)字化轉(zhuǎn)型的根本目的是什么?
數(shù)據(jù)的緩存為什么如此的重要?
虹科Redis Enterprise又能夠在哪些方面助力企業(yè)解決數(shù)據(jù)處理難題?
當(dāng)前數(shù)據(jù)庫(kù)緩存面臨的挑戰(zhàn):
使用當(dāng)前數(shù)據(jù)庫(kù)實(shí)現(xiàn)速度和可擴(kuò)展性
實(shí)現(xiàn)滿足用戶期望所需的數(shù)據(jù)性能并不容易。企業(yè)需要應(yīng)對(duì)遺留基礎(chǔ)設(shè)施、緩慢的數(shù)據(jù)庫(kù)和技術(shù)債務(wù)。他們經(jīng)常面臨成本、精力和業(yè)務(wù)連續(xù)性限制。
數(shù)據(jù)是業(yè)務(wù)應(yīng)用程序的命脈。然而,組織的應(yīng)用程序必須處理大型數(shù)據(jù)集,這會(huì)降低性能,特別是當(dāng)應(yīng)用程序每次需要時(shí)都必須訪問(wèn)數(shù)據(jù)庫(kù)時(shí)。
結(jié)果是痛苦且昂貴的:
?
l?延遲:客戶期望應(yīng)用程序能夠立即響應(yīng),但許多業(yè)務(wù)應(yīng)用程序速度太慢。
l?可擴(kuò)展性:?許多應(yīng)用程序和數(shù)據(jù)庫(kù)都在努力支持?jǐn)?shù)字業(yè)務(wù)服務(wù)的增長(zhǎng)或承受突然的需求激增。
l?彈性:由于應(yīng)用程序處于業(yè)務(wù)停機(jī)的最前沿,因此停機(jī)是一項(xiàng)重大的業(yè)務(wù)風(fēng)險(xiǎn),而防止停機(jī)是一項(xiàng)重大的技術(shù)挑戰(zhàn)。
l?技術(shù)債務(wù):企業(yè)需要提高性能、可擴(kuò)展性和彈性,而無(wú)需承受從頭開(kāi)始重新設(shè)計(jì)系統(tǒng)的痛苦和費(fèi)用。
解決方案:使用Redis企業(yè)版進(jìn)行緩存
企業(yè)級(jí)緩存層會(huì)產(chǎn)生巨大的影響。緩存層是位于應(yīng)用程序和數(shù)據(jù)庫(kù)之間的臨時(shí)存儲(chǔ)位置。它允許應(yīng)用程序快速訪問(wèn)經(jīng)常需要的數(shù)據(jù),而不必每次都查詢數(shù)據(jù)庫(kù)。這通過(guò)縮短響應(yīng)時(shí)間并減輕數(shù)據(jù)庫(kù)的負(fù)擔(dān)來(lái)顯著增強(qiáng)應(yīng)用程序性能和可擴(kuò)展性。
這不僅僅是一個(gè)技術(shù)問(wèn)題。緩存提供了業(yè)務(wù)優(yōu)勢(shì),因?yàn)樗鼫p輕了對(duì)軟件開(kāi)發(fā)和操作人員的需求。實(shí)施企業(yè)級(jí)緩存可以避免耗時(shí)、資源密集且昂貴的數(shù)據(jù)庫(kù)遷移或應(yīng)用程序重構(gòu)。換句話說(shuō): 這是解決性能和可用性問(wèn)題的快速方法,無(wú)需要求開(kāi)發(fā)人員在其待 辦事項(xiàng)列表中添加另一個(gè)項(xiàng)目。
Redis Enterprise 由 Redis 開(kāi)源的創(chuàng)建者構(gòu)建,在具有挑戰(zhàn)性的企業(yè)生產(chǎn)環(huán)境中部署已有十多年的歷史。
可在本地、通過(guò)Kubernetes、在混合環(huán)境中使用,或在Amazon Web Services(AWS) ,微軟Azure,和谷歌云(GCP) 環(huán)境中完全托管,Redis Enterprise 幫助數(shù)千個(gè)大型組織保持實(shí)時(shí)性能,并具有可擴(kuò)展性、成本效率和高可用性。它也很容易使用,這就是開(kāi)發(fā)人員爭(zhēng)相使用它的原因。
?
用例一:旁路緩存
何時(shí)使用它?
為了加快數(shù)據(jù)庫(kù)讀取速度。旁路緩存通常與最近最少使用(LRU)淘汰策略一起使用
1. 真實(shí)用例
考慮在零售網(wǎng)站上展示特色產(chǎn)品。第一次展示產(chǎn)品時(shí),電子商務(wù)應(yīng)用程序會(huì)從記錄系統(tǒng)加載產(chǎn)品詳細(xì)信息 (圖像、價(jià)格和元數(shù)據(jù)) 。然后,應(yīng)用程序?qū)⒃敿?xì)信息緩存到 Redis Enterprise 中。
結(jié)果: 網(wǎng)站可以以低延遲向大量用戶提供相同的數(shù)據(jù)。
2. 描述
使用 Redis Enterprise 作為緩存的最常見(jiàn)方式是旁路緩存。
數(shù)據(jù)僅在必要時(shí)才加載到Redis Enterprise緩存中,因此有時(shí)被稱為延遲加載。
當(dāng)需要緩存數(shù)據(jù)集的子集并且緩存未命中可以接受時(shí),旁路緩存是讀取應(yīng)用程序的常見(jiàn)選擇。使用緩存端模式,應(yīng)用程序處理所有數(shù)據(jù)操作,并直接與緩存和數(shù)據(jù)庫(kù)通信。數(shù)據(jù)庫(kù)和緩存不直接相互通信。
3.緩存端如何與 Redis Enterprise配合使用?
應(yīng)用程序查看 Redis Enterprise 緩存以檢索數(shù)據(jù)。如果找到數(shù)據(jù) (稱為緩存命中) ,Redis會(huì)將數(shù)據(jù)傳送到應(yīng)用程序。這種情況發(fā)生在亞毫秒級(jí)延遲的情況下。
如果未找到數(shù)據(jù) (緩存未命中) ,應(yīng)用程序?qū)臄?shù)據(jù)庫(kù)中檢索數(shù)據(jù)。延遲較高時(shí)會(huì)發(fā)生這種情況。然后,應(yīng)用程序?qū)?shù)據(jù)寫(xiě)入 Redis Enterprise。
?
用例二:查詢緩存
何時(shí)使用它?加快高延遲常用查詢的速度
1.真實(shí)用例
真實(shí)用例: 使遺留應(yīng)用程序保持最新?tīng)顟B(tài)是一個(gè)令人痛苦的項(xiàng)目。
即使舊系統(tǒng)必須與新軟件交互,也沒(méi)有人愿意接觸塵土飛揚(yáng)、挑剔的代碼。查詢緩存可讓您保留舊系統(tǒng),并將其連接到具有更快 SOL 數(shù)據(jù)性能的新系統(tǒng)。
2.描述
使用查詢緩存來(lái)提高查詢性能,從而縮短數(shù)據(jù)查詢的響應(yīng)時(shí)間。查詢緩存是旁路緩存模式的獨(dú)特實(shí)現(xiàn),旨在針對(duì)較慢的記錄系統(tǒng)加速 (通??芍貜?fù)) SOL 查詢。
通過(guò)查詢緩存,您不需要將數(shù)據(jù)轉(zhuǎn)換為另一種數(shù)據(jù)結(jié)構(gòu)。從應(yīng)用程序的角度來(lái)看,這只是一個(gè)數(shù)據(jù)庫(kù)查詢,返回的值來(lái)自緩存而不是有意的數(shù)據(jù)庫(kù)讀取。查詢用作鍵,序列化結(jié)果集用作值。
一種常見(jiàn)的用途是遷移到微服務(wù)的企業(yè)。當(dāng)企業(yè)遷移到微服務(wù)而無(wú)需重新構(gòu)建當(dāng)前系統(tǒng)平臺(tái)或從頭開(kāi)始時(shí),使用查詢緩存是很常見(jiàn)的。
這種解決方案中的一個(gè)要素是Redis智能緩存。它使開(kāi)發(fā)人員能夠快速部署標(biāo)準(zhǔn)化查詢緩存以簡(jiǎn)化管理和操作,而且您無(wú)需重新設(shè)計(jì)應(yīng)用程序。只需將庫(kù)添加為新的依賴項(xiàng),并將 Redis 端點(diǎn)作為其屬性文件即可。該庫(kù)還支持對(duì)通過(guò) Java 數(shù)據(jù)庫(kù)連接(JDBC) 驅(qū)動(dòng)程序流向記錄系統(tǒng)的所有查詢進(jìn)行分析。
3.查詢緩存如何與 Redis Enterprise配合使用?
當(dāng)應(yīng)用程序想要查詢數(shù)據(jù)庫(kù)時(shí),它會(huì)向 RedisEnterprise 緩存發(fā)送 SQL 查詢。
如果找到數(shù)據(jù)(稱為緩存命中),RedisEnterprise 會(huì)將數(shù)據(jù)傳送到應(yīng)用程序。這種情況發(fā)生在亞毫秒級(jí)延遲的情況下。
?
用例三:后寫(xiě)式緩存
何時(shí)使用它?
在一致性至關(guān)重要時(shí)加快讀取速度,而不強(qiáng)制應(yīng)用程序管理多個(gè)數(shù)據(jù)源連接
1.真實(shí)用例
一些行業(yè)需要數(shù)據(jù)庫(kù)來(lái)保存額外的記錄,例如醫(yī)療和金融公司。
但每個(gè)事務(wù)寫(xiě)入多個(gè)數(shù)據(jù)庫(kù)會(huì)抑制寫(xiě)入響應(yīng)時(shí)間,并可能導(dǎo)致應(yīng)用程序延遲。
例如,當(dāng)您需要處理財(cái)務(wù)記錄和交易數(shù)據(jù)并將其保存在冷存儲(chǔ)中以進(jìn)行審計(jì)或報(bào)告時(shí),Write behind 緩存是個(gè)不錯(cuò)的選擇。
2.描述
某些應(yīng)用程序訪問(wèn)現(xiàn)有信息的頻率遠(yuǎn)高于存儲(chǔ)或更新事務(wù)的頻率。和查詢緩存非常適合這些場(chǎng)景。然而,當(dāng)應(yīng)用程序執(zhí)行大量寫(xiě)入操作
后寫(xiě)式緩存是更好的選擇。它提高了寫(xiě)入性能并簡(jiǎn)化了應(yīng)用程序開(kāi)發(fā),因?yàn)閼?yīng)用程序僅寫(xiě)入一個(gè)位置: Redis Enterprise。然后,Redis Enterprise異步更新后端數(shù)據(jù)庫(kù)。
您可以將 Redis Enterprise 的集成更改數(shù)據(jù)捕獲(CDC)與緩存一起使用,以識(shí)別緩存中更改的數(shù)據(jù),并確保數(shù)據(jù)最終在底層數(shù)據(jù)庫(kù)中更新。
3.后寫(xiě)式緩存如何與?Redis Enterprise配合使用?
應(yīng)用程序?qū)?shù)據(jù)寫(xiě)入Redis Enterprise緩存,而不是直接寫(xiě)入數(shù)據(jù)庫(kù)。
數(shù)據(jù)存儲(chǔ)到Redis Enterprise后,Redis Enterprise使用集成的CDC異步寫(xiě)入數(shù)據(jù)庫(kù)。
?
用例四:直寫(xiě)式緩存
何時(shí)使用它?
加速寫(xiě)入密集型工作負(fù)載,而不強(qiáng)制應(yīng)用程序管理多個(gè)數(shù)據(jù)源連接。
1.真實(shí)用例
真實(shí)用例:一些企業(yè)使用“關(guān)鍵任務(wù)”作為流行語(yǔ)。但對(duì)許多人來(lái)說(shuō),這是赤裸裸的事實(shí)陳述一一妥協(xié)不是一種選擇。當(dāng)您需要緩存但絕對(duì)不能丟失數(shù)據(jù) (例如關(guān)鍵零售客戶數(shù)據(jù)或金融交易數(shù)據(jù)) 時(shí),請(qǐng)考慮直寫(xiě)式緩存。
2.描述
直寫(xiě)式緩存策略與后寫(xiě)式方法類(lèi)似,因?yàn)榫彺嫖挥趹?yīng)用程序和操作數(shù)據(jù)存儲(chǔ)之間。
緩存負(fù)責(zé)立即更新數(shù)據(jù)庫(kù)。然后,應(yīng)用程序可以直接從Redis Enterprise 讀取數(shù)據(jù),延遲時(shí)間為亞毫秒級(jí)。
直寫(xiě)模式有利于緩存和數(shù)據(jù)存儲(chǔ)之間的數(shù)據(jù)一致性。它依靠事件驅(qū)動(dòng)的功能來(lái)實(shí)現(xiàn)系統(tǒng)之間的數(shù)據(jù)流。Redis能夠確保數(shù)據(jù)庫(kù)同步更新,以保持緩存和記錄系統(tǒng)之間的一致性。
3.直寫(xiě)式緩存如何與 Redis Enterprise配合使用?
應(yīng)用程序?qū)?shù)據(jù)寫(xiě)入 Redis Enterprise 緩存。
Redis Enterprise 確保記錄系統(tǒng)同步更新,以保持Redis Enterprise 和記錄系統(tǒng)之間的一致性。
?
用例五:緩存預(yù)取
何時(shí)使用它?
通過(guò)從記錄系統(tǒng)卸載讀取,在寫(xiě)入優(yōu)化和讀取優(yōu)化工作負(fù)載之間部署連續(xù)復(fù)制。
1.真實(shí)用例
應(yīng)用程序依靠用戶配置文件在整個(gè)會(huì)話期間識(shí)別個(gè)人 (從身份驗(yàn)證開(kāi)始) 。
這些用戶配置文件經(jīng)常被讀取,但很少更改。緩存預(yù)取應(yīng)用程序的用戶配置文件,允許直接在數(shù)據(jù)庫(kù)中進(jìn)行不頻繁的寫(xiě)入,同時(shí)將數(shù)據(jù)預(yù)加載到 Redis Enterprise 以支持大量讀取。
這使得應(yīng)用程序響應(yīng)速度更快、可擴(kuò)展性更高、成本更低。
2.描述
緩存預(yù)取用于寫(xiě)入優(yōu)化和讀取優(yōu)化工作負(fù)載之間的連續(xù)復(fù)制。
通過(guò)這種緩存模式,應(yīng)用程序的寫(xiě)入直接發(fā)生到數(shù)據(jù)庫(kù)。
當(dāng)數(shù)據(jù)在記錄系統(tǒng)中發(fā)生變化時(shí),數(shù)據(jù)會(huì)使用集成的 CDC 復(fù)制到 Redis Enterprise,因此數(shù)據(jù)會(huì)在應(yīng)用程序需要讀取之前到達(dá)緩存。
3.緩存預(yù)取如何與 Redis Enterprise配合使用?
應(yīng)用程序?qū)?shù)據(jù)直接寫(xiě)入其原始記錄系統(tǒng)。
當(dāng)數(shù)據(jù)在記錄系統(tǒng)中發(fā)生更改時(shí),集成 CDC 會(huì)將數(shù)據(jù)復(fù)制到 Redis Enterprise 緩存。最終效果是數(shù)據(jù)在應(yīng)用程序請(qǐng)求數(shù)據(jù)之前到達(dá),以便執(zhí)行數(shù)據(jù)庫(kù)讀取。
然后應(yīng)用程序直接從 Redis Enterprise 讀取。
隨心緩存
許多軟件項(xiàng)目都是從基層應(yīng)用程序開(kāi)始的。一旦成功,它們就會(huì)發(fā)展成為成千上萬(wàn)人依賴的廣泛系統(tǒng)。隨著用戶數(shù)量、數(shù)據(jù)量和地理位置的增加,成本、可擴(kuò)展性、操作和系統(tǒng)可用性問(wèn)題也隨之增加。
大多數(shù)緩存缺乏緩解這些問(wèn)題的功能。開(kāi)發(fā)人員花時(shí)間旋轉(zhuǎn)輪子或重新發(fā)明這些輪子,這并沒(méi)有很好地利用他們的時(shí)間一特別是當(dāng)這些精力更好地花在改進(jìn)創(chuàng)新軟件上時(shí)。Redis開(kāi)源提供的緩存很棒,我們?yōu)榇烁械阶院? 但在某些時(shí)候,投資由具有主題專(zhuān)業(yè)知識(shí)的人員構(gòu)建的工具是有意義的。
能升級(jí)到更好的緩存解決方案可能會(huì)阻礙業(yè)務(wù)增長(zhǎng),導(dǎo)致數(shù)據(jù)丟失或應(yīng)用程序性能不佳,并導(dǎo)致 Redis產(chǎn)生大量工作和費(fèi)用的機(jī)會(huì)成本。升級(jí)到企業(yè)級(jí)緩存對(duì)于實(shí)現(xiàn)和支持業(yè)務(wù)增長(zhǎng)至關(guān)重要。
Redis Enterprise 是唯一提供以下功能的企業(yè)級(jí)緩存:
?
l?靈活性:?jiǎn)我粩?shù)據(jù)平臺(tái),可與本地、混合環(huán)境或任何云中的現(xiàn)有基礎(chǔ)設(shè)施無(wú)縫協(xié)作
l?可擴(kuò)展性:輕松擴(kuò)展,在每秒數(shù)百萬(wàn)次操作的情況下保持亞毫秒級(jí)延遲
l?高可用性:具有五個(gè)九的 SLA,在支持關(guān)鍵任務(wù)應(yīng)用程序方面表現(xiàn)出色
l?成本效益:緩存大型數(shù)據(jù)集時(shí),存儲(chǔ)分層可節(jié)省高達(dá) 80%的基礎(chǔ)設(shè)施成本
l?簡(jiǎn)單:與現(xiàn)有架構(gòu)一起工作,支持各種緩存模式 (無(wú)需重新架構(gòu)或重新平臺(tái)) ,并因易于使用而享有盛譽(yù)
Redis 已經(jīng)解決了幾乎所有類(lèi)型的緩存問(wèn)題。隨著我們開(kāi)發(fā)這種專(zhuān)業(yè)知識(shí),我們構(gòu)建了使客戶更輕松地進(jìn)行緩存的功能。借助 Redis Enterprise,我們可以處理緩存隱藏的復(fù)雜性,因此您不必自己處理。
虹科《用于緩存的Redis企業(yè)版》通過(guò)旁路緩存、查詢緩存、后寫(xiě)式緩存等5個(gè)用例探索了虹科Redis企業(yè)版在緩存應(yīng)用程序中的強(qiáng)大功能。下面是白皮書(shū)節(jié)選部分:
?





虹科是Redis原廠的中國(guó)區(qū)戰(zhàn)略合作伙伴。點(diǎn)擊收藏轉(zhuǎn)發(fā),關(guān)注我們獲得更多虹科Redis企業(yè)版數(shù)據(jù)庫(kù)干貨資料分享!