【Redis】SpringBoot+Redis+Ehcache實現二級緩存


一、概述

1.1 一些疑惑?

  • Ehcache本地內存
  • Redis 分布式緩存可以共享

  • 一級(redis) 和二級概念(Ehcache )目的是當redis掛的之后,有備台(本地JVM緩存)

  • 一級(Ehcache )和二級概念(redis) 先走本地,如果本地沒有在走網絡,效率會更高點。

  • Redis與數據庫的區別:

    • 相同點:都是需要進行網絡連接。
    • 不同點:存放介質存放在內存中、數據庫數據硬盤上面。
    • 從效率來說,數據庫需要做IO操作,性能比直接操作內存效率要低。
  • Ehcache需要走網絡訪問嗎?

    • 不需要,直接從內存獲取。
    • 會不會產生Ehcache內存溢出: 容器限制,會持久化在硬盤上。
    • 目的是為了減輕redis的訪問壓力,也可以提高訪問的速度。

1.2 場景

  • Spring Boot中集成了Spring Cache,並有多種緩存方式的實現,如:Redis、Caffeine、JCache、EhCache等等。但如果只用一種緩存,要么會有較大的網絡消耗(如Redis),要么就是內存占用太大(如Caffeine這種應用內存緩存)。在很多場景下,可以結合起來實現一、二級緩存的方式,能夠很大程度提高應用的處理效率。

1.3 一級緩存、兩級緩存的產生

  • 簡單的理解,緩存就是將數據從讀取較慢的介質上讀取出來放到讀取較快的介質上,如磁盤-->內存。平時我們會將數據存儲到磁盤上,如:數據庫。
  • 如果每次都從數據庫里去讀取,會因為磁盤本身的IO影響讀取速度,所以就有了像redis這種的內存緩存。
  • 可以將數據讀取出來放到內存里,這樣當需要獲取數據時,就能夠直接從內存中拿到數據返回,能夠很大程度的提高速度。
  • 但是一般redis是單獨部署成集群,所以會有網絡IO上的消耗,雖然與redis集群的鏈接已經有連接池這種工具,但是數據傳輸上也還是會有一定消耗。
  • 所以就有了應用內緩存,如:caffeine。當應用內緩存有符合條件的數據時,就可以直接使用,而不用通過網絡到redis中去獲取,這樣就形成了兩級緩存。應用內緩存叫做一級緩存,遠程緩存(如redis)叫做二級緩存

1.4 流程分析

二、項目搭建

SpringBoot-Redis_Ehcache


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM