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: */*"
- 控制台輸出
資料庫查詢隻執行了一次,第二次則是從緩存中取資料
- Redis Desktop Manager用戶端連接配接并檢視緩存資料
至此,Sprinboot使用Redis集中式緩存整合成功!
本文由部落格群發一文多發等營運工具平台 OpenWrite 釋出