springboot整合redis快取
阿新 • • 發佈:2018-12-19
使用redis作為快取
1. 在pom.xml檔案中匯入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2. 在啟動類中新增使用快取的註解
@EnableCaching
3. 在application.yml中配置redis的資訊
spring: redis: host: localhost port: 6379
4. 在service層配置快取註解
- 注意:配置在dao層會丟擲找不到key的錯誤
- 解決方式1:配置在service層
- 解決方式2:自定義一種key的生成策略
/** * 使用@CacheConfig是一個類級別的註解,允許共享快取的名稱、KeyGenerator、CacheManager 和CacheResolver。 * * @author: [email protected] * @date: 2018/5/17 */ @Service @CacheConfig(cacheNames = "user") public class UserService { @Autowired private UserMapper userMapperr; /** * 使用@CachePut:在新增物件時就放入快取中,一般不建議這麼做,因為會造成快取過多,也沒有必要每條新增資料都放入快取 * * @param user */ public void save(User user) { userMapperr.save(user); } /** * 通過ID查詢資料 * unless:true表示不儲存到快取,與condition相反 * * @param id * @return */ @Cacheable(key = "#id", unless = "#result == null") public User getById(Integer id) { return userMapperr.getById(id); } /** * 使用@CacheEvict消除快取,在每次對資料進行刪除時,就清除快取。 * * @param id */ @CacheEvict(key = "#id") public void delete(Integer id) { userMapperr.delete(id); } /** * 修改時建議清除快取,而不是重新放入快取,這樣可以避免多個執行緒修改相同資料時, * 最後有效的修改不是放入快取的資料,造成資料不是最新資料。 * * @param user */ @CacheEvict(key = "#user.id") public void update(User user) { userMapperr.update(user); } }