Spring Cache是一個框架,實現了基于注解的緩存功能,只需要簡單地加一個注解,就能實現緩存功能,大大簡化我們在業務中操作緩存的代碼。
Spring Cache只是提供了一層抽象,底層可以切換不同的cache實現。具體就是通過CacheManager接口來統一不同的緩存技術。CacheManager是Spring提供的各種緩存技術抽象接口。
Spring boot 使用Spring Cache時需要添加Cache依賴以及redis依賴
redis默認的Key序列化器為:JdkSerializationRedisSerializer ,需要進行修改避免出現亂碼
在引導類上加? @EnableCaching,就代表當前項目開啟緩存注解功能。
在配置文件中設置redis與cache 的配置
注解 | 說明 |
@EnableCaching | 開啟緩存注解功能? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? |
@Cacheable | 在執行方法前Spring先查看緩存中是否有數據,如有數據則直接返回緩存的數據,若無數據正常執行方法并將方法的返回值存入緩存. |
@CachePut | 將返回值方法存入緩存 |
@CacheEvict | 將一條或多條數據從緩存中刪除 |
/**
* CachePut:將方法返回值放入緩存
* value:緩存的名稱,每個緩存名稱下面可以有多個key
* key:緩存的key
*/
@CachePut(value = "userCache", key = "#result.id")
/*
#result.id 表示返回值中的id元素
key可以設許多值,例:#user.id 表示方法參數user對象的id元素//@CachePut(value = "userCache",key = "#p0") //#p0 代表第一個參數
//@CachePut(value = "userCache",key = "#root.args[0]") //#root.args[0] 代表第一個參數
@CachePut(value = "userCache",key = "#id") //#id 代表變量名為id的參數
@GetMapping
public User save("/{id}"){return id;
}
*/
@PostMapping
public User save(User user){userService.save(user);return user;
}
/**
* CacheEvict:清理指定緩存
* value:緩存的名稱,每個緩存名稱下面可以有多個key
* key:緩存的key
*/
@CacheEvict(value = "userCache",key = "#id") //#id 代表變量名為id的參數
@DeleteMapping("/{id}")
public void delete(@PathVariable Long id){userService.removeById(id);
}
/**
* Cacheable:在方法執行前spring先查看緩存中是否有數據,如果有數據,則直接返回緩存數據;若沒有數據,調用方法并將方法返回值放到緩存中
* value:緩存的名稱,每個緩存名稱下面可以有多個key
* key:緩存的key
*/
@Cacheable(value = "userCache",key = "#id")
@GetMapping("/{id}")
public User getById(@PathVariable Long id){User user = userService.getById(id);return user;
}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态