SpringBoot日記——Cache緩存篇


通常我們訪問數據的情況如下圖,數據存緩存就取緩存,不存緩存就取數據庫,這樣可以提升效率,不用一直讀取數據庫的信息:

開始記錄:

 

關於SpringBoot緩存的應用

 

1. 首先在pom.xml文件中添加如下:

<dependency>
      <!-- cache緩存 -->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-cache</artifactId>
</dependency>

2.在application的main方法中添加注解 @EnableCaching ,以開啟緩存注解的應用:

@SpringBootApplication
@EnableCaching
public class AppConfig {

    public static void main(String[] args) {
        SpringApplication.run(AppConfig.class, args);
    }
}

3.在service等需要添加入緩存的方法前加入注解 @Cacheable (使用緩存,不調用方法)

    /**
     * 根據ID查找用戶信息,將方法運行結果進行緩存:以后再要相同數據,直接從緩存取,不需要調用方法;
     */
    @Cacheable(cacheNames = {"cache1"})  //cacheNames或value都可以,表示你自定義的緩存容器的名字,這里使用大括號是說明可以存在多個緩存中使用
    public User findById(Integer id) {
        log.info("查詢 ID=" + id + " 的結果");
        User byId = userDao.findById(id);
        return byId;
    }

  3.1 緩存參數及條件的使用,采用pESL寫法:

//  key表示該緩存的key,值是方法中的value; condition表示如果xx就使用緩存; unless表示如果xx就不使用緩存;
// 可以在condition或unless的雙引號中用and來拼各種其他條件
@Cacheable(cacheNames = {"acc"}, key= "#root.methodName",condition = "#id>2",unless = "#a0==null")

4. 在service或需要的方法前加入@CachePut注解(即調用方法,又寫數據庫),用於修改數據庫或更新緩存

    @CachePut(value = "acc",key = "#user.id")
    public User update(User user) {
        System.out.println("更新信息" + user);
        userDao.update(user);
        return user;
    }

5.清除緩存,@CacheEvict。通常使用allEntries = true可以清除全部緩存,即不用單獨制定key

    @CacheEvict(value = "acc", allEntries = true)
    public void delete(Integer id) {
        userDao.delete(id);
    }

 6.如果需要許多條件的疊加,使用@Caching,圖示例子如下:

7. service下邊每個方法都要寫緩存名字比較麻煩,通常我們將總的名字寫在service的類前邊,@CacheConfig(cacheNames = {"emp"}),依次類推,把公共的緩存配置都寫在這里就可以了;

  通常來說,我們在開發過程中,多使用的是緩存中間件,比如:Redis、memcached、ehcache等;

  SpringBoot默認使用的是SimpleCacheConfiguration的配置,然而還有許多其他的配置可用,那么我們后邊來看一下Redis要如何配置。


免責聲明!

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



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