1. 程式人生 > >Spring Boot 2.x基礎教程:使用EhCache快取叢集

Spring Boot 2.x基礎教程:使用EhCache快取叢集

[上一篇](http://blog.didispace.com/spring-boot-learning-21-5-2/)我們介紹了在Spring Boot中整合EhCache的方法。既然用了ehcache,我們自然要說說它的一些高階功能,不然我們用預設的`ConcurrentHashMap`就好了。本篇不具體介紹EhCache快取如何落檔案、如何配置各種過期引數等常規細節配置,這部分內容留給讀者自己學習,如果您不知道如何搞,可以看看這裡的[官方文件](http://www.ehcache.org/)。 那麼我們今天具體講什麼呢?先思考一個場景,當我們使用了EhCache,在快取過期之前可以有效的減少對資料庫的訪問,但是通常我們將應用部署在生產環境的時候,為了實現應用的高可用(有一臺機器掛了,應用還需要可用),肯定是會部署多個不同的程序去執行的,那麼這種情況下,當有資料更新的時候,每個程序中的快取都是獨立維護的,如果這些程序快取同步機制,那麼就存在因快取沒有更新,而一直都用已經失效的快取返回給使用者,這樣的邏輯顯然是會有問題的。所以,本文就來說說當使用EhCache的時候,如果來組建程序內快取EnCache的叢集以及配置配置他們的同步策略。 **由於下面是組建叢集的過程,務必採用多機的方式除錯,避免不必要的錯誤發生。** ## 動手試試 本篇的實現將基於[上一篇](http://blog.didispace.com/spring-boot-learning-21-5-2/)的基礎工程來進行。先來回顧下上一篇中的程式要素: **User實體的定義** ```java @Entity @Data @NoArgsConstructor public class User { @Id @GeneratedValue private Long id; private String name; private Integer age; public User(String name, Integer age) { this.name = name; this.age = age; } } ``` **User實體的資料訪問實現(涵蓋了快取註解)** ```java @CacheConfig(cacheNames = "users") public interface UserRepository extends JpaRe