SpringBoot繼承Redis緩存

第一步: 導入spring-boot-starter-cache模塊

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

第二步: @EnableCaching開啓緩存

@SpringBootApplication
@MapperScan("com.winter.mapper")

@EnableCaching //開啓緩存

//此處必須加包掃描
public class Start {

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

第三步:bean序列化
注意UID,否則出現序列化錯誤

public class User implements Serializable
private static final long serialVersionUID = -1421786817532421671L;

第四步: 使用緩存註解
只要給service類/接口增加註解,spring會自動查詢緩存

@EnableCaching
//類通用註解
@CacheConfig(cacheNames = "user")

public interface UserService {
    //新增緩存
    @CachePut(key="#user.userId")
   //  注意這裏方法返回值必須是User,否則查詢緩存出現類轉換異常int->User(之前我的返回值是int)
    User addUser(User user);

    //不同條件的查詢放在不同的緩存裏,否則會查詢到其他方法的緩存值
    //這裏沒有指定key。key默認爲pageNum+pageSize的hash值
    @Cacheable(cacheNames = "allUser")
    List<User> findAllUser(int pageNum, int pageSize);

    //查詢緩存
    @Cacheable(key="#userId")
    User selectByPrimaryKey(int userId);
    
    //刪除緩存
    @CacheEvict(key="#userId")
    int  deleteByPrimaryKey(int userId);
}

第五步:檢查方法返回值
方法返回值的類型,就是key對應的值的類型。如果多個方法共用一個cache且key相同。但是返回值類型不一致,則會造成類轉換異常。

測試結果

新增數據後,查詢,可以直接查詢到緩存種的值,不用查詢數據庫。 可以看到第二次查詢沒有sql語句 預編譯

在這裏插入圖片描述
配置文件


server:
  port: 8080

spring:
  datasource:
    name: test
    url: jdbc:mysql://127.0.0.1:3306/test
    username: root
    password: root
    # 使用druid數據源
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    filters: stat
    maxActive: 20
    initialSize: 1
    maxWait: 60000
    minIdle: 1
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: select 'x'
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxOpenPreparedStatements: 20

  thymeleaf:
    cache: true
  redis:
    host: xx.xx.x.xxx
    port: 6379
    password: [email protected]


mybatis:
  mapper-locations: classpath:mapping/*.xml  #注意:一定要對應mapper映射xml文件的所在路徑
  type-aliases-package: com.winter.model  # 注意:對應實體類的路徑
  configuration:
    #開啓下劃線到駝峯命名法的自動轉換,將數據庫字段根據駝峯規則自動注入到對象屬性
    map-underscore-to-camel-case: true


logging:
  level:
    #打印SQL信息
    com.winter.mapper: debug

debug: true
#觀察哪些配置類生效

#pagehelper分頁插件
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

pom文件

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章