Redis-實戰篇-緩存更新策略(內存淘汰、超時剔除、主動更新)

文章目錄

  • 1、緩存更新策略
    • 1.1、內存淘汰
    • 1.2、超時剔除
    • 1.3、主動更新
  • 2、業務場景:
  • 3、主動更新在企業中業務實現有三種方式
    • 3.1、Cache Aside Pattern
      • 3.1.1、操作緩存和數據庫時有三個問題需要考慮:
        • 3.1.1.1、刪除緩存還是更新緩存?
        • 3.1.1.2、如何保證緩存與數據庫的操作的同時成功或失敗?
        • 3.1.1.3、先操作緩存還是先操作數據庫?
    • 3.2、Read/Write Through Pattern
    • 3.3、Write Behind Caching Pattern
  • 4、緩存更新策略的最佳實踐方案:
  • 5、讀操作
  • 6、寫操作:

1、緩存更新策略

1.1、內存淘汰

說明:不用自己維護,利用Redis的內存淘汰機制,當內存不足時自動淘汰部分數據。下次查詢時更新緩存。
一致性:差
維護成本:無

1.2、超時剔除

說明:給緩存數據添加TTL(Time To Live)時間,到期后自動刪除緩存。下次查詢時更新緩存。
一致性:一般
維護成本:低

1.3、主動更新

編寫業務邏輯,在修改數據庫的同時,更新緩存
一致性:好
維護成本:高

2、業務場景:

  • 低一致性需求:使用內存淘汰機制。例如店鋪類型的查詢緩存
  • 高一致性需求:主動更新,并以超時剔除作為兜底方案。例如店鋪詳情查詢的緩存

3、主動更新在企業中業務實現有三種方式

3.1、Cache Aside Pattern

企業用的最多
由緩存的調用者,在更新數據庫的同時更新緩存

3.1.1、操作緩存和數據庫時有三個問題需要考慮:

3.1.1.1、刪除緩存還是更新緩存?
  • 更新緩存:每次更新數據庫都更新緩存,無效寫操作較多
  • 刪除緩存:更新數據庫時讓緩存失效,查詢時再更新緩存,一般會選擇刪除緩存的這個方案
3.1.1.2、如何保證緩存與數據庫的操作的同時成功或失敗?
  • 單體系統:將緩存與數據庫操作放在一個事務
  • 分布式系統:利用TCC等分布式事務方案
3.1.1.3、先操作緩存還是先操作數據庫?
  • 先刪除緩存,再操作數據庫
  • 先操作數據庫,再刪除緩存,勝出

在這里插入圖片描述

3.2、Read/Write Through Pattern

緩存與數據庫整合為一個服務,由服務來維護一致性。調用者調用該服務,無需關心緩存一致性問題。

3.3、Write Behind Caching Pattern

調用者只操作緩存,由其它線程異步的將緩存數據持久化到數據庫,保證最終一致。

4、緩存更新策略的最佳實踐方案:

  1. 低一致性需求:使用Redis自帶的內存淘汰機制
  2. 高一致性需求:主動更新,并以超時剔除作為兜底方案

5、讀操作

  • 緩存命中則直接返回
  • 緩存未命中則查詢數據庫,并寫入緩存,設定超時時間

6、寫操作:

  • 先寫數據庫,然后再刪除緩存
  • 要確保數據庫與緩存操作的原子性

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37648.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37648.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37648.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據同步軟件有哪些

數據同步軟件有哪些呢?隨著企業規模的擴大,企業數據也積累得越來越多,萬一發生宕機風險,那么這個損失將不可估量。所以為了容災備用,我們往往需要將數據同步到另一臺備胎服務器上,進行冗余。 那么需要同步的…

centos7.9 python3環境(virtualenv)搭建及所遇錯誤

人望山,魚窺荷,真正喜歡想要的,沒有一樣可以輕易得到。 目錄 # 1. 解決版本沖突問題--建議不要跳過(一定要查看軟鏈接是否鏈接正確) # 2. python3(virtualenv)環境搭建 # 3. virtualenv常用命令 # 4. 所遇錯誤解析 ## 4.1 遇到 No modul…

惠海 H6246低功耗DC/DC降壓型恒壓芯片60V降3.3V5V12V 藍牙模塊 單片機供電

1.產品描述 H6246是一種內置60V耐壓MOS,支持輸入高達48V的高壓降壓開關控制器,可以向負載提供0.3A的連續電流。H6246支持輸出恒定電壓,可以通過調節VFB采樣電阻來設置輸出電壓,同時支持最大電流限制,可以通過修改CS采…

操作系統期末復習考題二

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 一、前言🚀🚀🚀二、正文??????三、總結🍓🍓🍓 一、前言🚀🚀&am…

【資源調度】1-何為調度?

導讀:本期是全網最全【資源調度】系列推文的第1期(共50期左右)。我們將對調度的定義與作用、計劃與調度的關系、調度問題的拆解做出詳細介紹,使大家對【資源調度】問題有了一個整體的認識,為后續的內容奠定基礎。 作者1:張哲銘&am…

個人搭建cppreference網站

近日,由于購買的騰訊云服務器要過期了,之前在服務器搭建的cppreference也要重新搭建,故寫下此文章 cppreference的訪問速度也慢,故自己WSL子系統簡單搭鍵一下是個不錯的選擇 環境準備 首先,自己先安裝Nginx,在網上找安裝教程即可下載cppreference網站資源包:https://pan.baidu…

ubuntu 軟鏈接(ubuntu20.04)

ubuntu 軟鏈接(ubuntu20.04) 在Ubuntu和其他Linux系統中,軟鏈接(也稱為符號鏈接)是文件系統中的一個特殊類型的文件,它作為一個引用或指針,指向另一個文件或目錄。軟鏈接類似于Windows中的快捷…

java-快速排序 4

總結 快速排序是一種高 java (String[] args) { int[] array {10, 7, 8, 9, 1, 5, 7, 8}; // 基本快速排序 int[] basicArray array.clone(); basicQuickSort(basicArray, 0, basicArray.length - 1); System.out.println("Basic…

unity ScrollRect裁剪ParticleSystem粒子

搜了下大概有這幾種方法 通過模板緩存通過shader裁剪區域:案例一,案例二,案例三,三個案例都是類似的方法,需要在c#傳入數據到shader通過插件 某乎上的模板緩存方法link,(沒有登錄看不到全文&a…

混沌工程介紹

概念 混沌工程是通過實驗探究系統穩定性的實踐過程,其作戰武器是風險因子,即在系統中引入風險變量來驗證系統對風險的抵抗能力,它的作用是推動系統容錯能力建設、驗證監控告警及時性、提升研發問題排查能力。 混沌工程的工作內容 推動基礎…

RFID固定資產管理系統在企業中的應用與優勢

隨著企業資產規模的不斷擴大和管理復雜性的增加,傳統的資產管理方式已無法滿足企業高效管理的需求。RFID固定資產管理系統憑借其高效、準確、實時的特點,成為企業固定資產管理的新寵。 一、什么是RFID固定資產管理系統 RFID(無線射頻識別&…

磁盤分區工具(fdisk 和 parted)區別及操作筆記

fdisk 和 parted 都是 Linux 系統中用于磁盤分區的工具。 兩者主要區別: 支持的分區表類型: fdisk 主要支持 MBR分區表,MBR分區表支持的硬盤單個分區最大容量為2TB,最多可以有4個主分區。parted 支持 MBR分區表 和 GPT分區表&…

使用AI工具 Baidu Comate 輔助編碼 快速定位修改Bug

一、Baidu Comate 概述 Baidu Comate(百度智能編碼助手)是一款基于文心大模型的新一代編碼輔助工具。它結合了百度多年積累的編程現場大數據和外部優秀開源數據,旨在為用戶提供高質量的編程代碼生成和優化服務。Comate的主要目標是提升編碼效…

人力資源敏捷管理

SБ_Итоговая аттестация_Управление человеческими ресурсами и их развитием в совр. организаци 你好,Вэйдун。當你提交此表單后,擁有者將會看到你的姓名和電子…

幫助某服務業公司制定發展戰略與未來規劃

在集團公司高速發展、業務范圍不斷擴大時,組織往往對公司未來的發展方向感到迷茫,不知道如何進行更好的規劃,找到合適的發展戰略,為企業提供更長遠的發展空間,帶來更多是利益。面對這個問題,華恒智信認為企…

【Hive SQL】時間戳格式化、時間字符串轉換格式化、時區切換(Mysql\Hive SQL\Athena)

文章目錄 一、日期格式化1、時間戳格式化2、日期字符串格式化3、時區切換4、時區列表 一、日期格式化 本文主要記錄 [Mysql\ Hive SQL\ Athena] 時間戳轉換、日期格式化、時區轉換各種數據數據操作 1、時間戳格式化 1、毫秒值轉 yyyy-MM-dd HH:mm:ss Mysql select FROM_UN…

AXI接口簡介

AXI接口,全稱為Advanced eXtensible Interface,是ARM公司推出的一種高性能、低成本、可擴展的高速總線接口。AXI接口是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)高級微控制器總線架構的一部分。2003年發布了…

股票回購(Share Repurchase)是什么?中英雙語介紹

股票回購 中文版 股票回購是指一家金融公司使用其現金儲備從公開市場上回購自身股票的行為。這一操作通常有以下幾個原因: 提升股價:當公司認為其股票被市場低估時,通過減少市場上的流通股數量,可以提升每股的市場價值。優化資…

RK3568平臺(USB篇)UVC驅動分析

一.UVC簡介 攝像頭分為兩類: 1.CAMER接口的攝像頭; 2.USB接口接口的攝像頭; 這里主要介紹usb攝像頭的設備驅動程序。 UVC全稱為USB Video Class,即:USB視頻類,是一種為USB視頻捕獲設備定義的協議標準。…

詳解ApplicationRunner和CommandLineRunner

一、前言 springBoot框架項目,有時候有預加載數據需求——提前加載到緩存中或類的屬性中,并且希望執行操作的時間是在容器啟動末尾時間執行操作。比如筆者工作中遇到了一個預加載redis中的緩存數據,加載為java對象。針對這種場景&#xff0c…