天天看點

Sprinboot之Redis集中式緩存

Sprinboot之Redis集中式緩存

如何在Spring Boot的緩存支援中使用Redis實作資料緩存。

pom.xml中增加相關依賴

<!-- redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        <!-- redis end-->
      
  • 注意
在​

​Spring Boot 1.x​

​​的早期版本中,該依賴的名稱為​

​spring-boot-starter-redis​

配置檔案中增加配置資訊

#Redis 配置
  redis:
    host: localhost
    port: 6379
    lettuce:
      pool:
        max-idle: 8
        max-active: 8
        max-wait: -1ms
        min-idle: 0
      
  • 參數說明
    • max-idle 最大空閑連接配接數
    • min-idle 最小空閑連接配接數
    • max-wait 等待可用連接配接的最大時間,負數為不限制
    • max-active 最大活躍連接配接數,負數為不限制
關于連接配接池的配置,注意幾點:
  • Redis的連接配接池配置在1.x版本中字首為spring.redis.pool與Spring Boot 2.x有所不同。
  • 在1.x版本中采用jedis作為連接配接池,而在2.x版本中采用了lettuce作為連接配接池

User實體的定義

@Entity
@Data
@Table(name = "test_user")
@NoArgsConstructor
public class User implements Serializable {

    @Id
    @GeneratedValue
    @Column(name = "id")
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Integer age;

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
}
      

User實體的資料通路實作

@CacheConfig(cacheNames = "users")
public interface UserRepository extends JpaRepository<User, Long> {

    @Cacheable
    ArrayList<User> findByName(String name);

}
      

User測試Controller

@PostMapping("/useRdeis")
    public void useRdeis (){
        System.out.println("CacheManager type : " + cacheManager.getClass());

        // 建立1條記錄
        userRepository.save(new User("ABC", 10));

        ArrayList<User> userArrayList = userRepository.findByName("ABC");
        //JsonRedisTemplate.opsForValue().set("usersInfo",userArrayList);
        System.out.println("第一次查詢:" );

        ArrayList<User> userArrayList1 = userRepository.findByName("ABC");
        System.out.println("第二次查詢:");

    }
      

接口測試

curl -X POST "http://10.172.96.135:9999/test/v1/useRdeis" -H "accept: */*"
      
  • 控制台輸出

資料庫查詢隻執行了一次,第二次則是從緩存中取資料

Sprinboot之Redis集中式緩存
  • Redis Desktop Manager用戶端連接配接并檢視緩存資料
Sprinboot之Redis集中式緩存

至此,Sprinboot使用Redis集中式緩存整合成功!

本文由部落格群發一文多發等營運工具平台 OpenWrite 釋出

繼續閱讀