redis進階之快取管理(1課時)
配置
spel表示式:https://blog.csdn.net/wujiaqi0921/article/details/79123873
參考spring手冊36小節,領著看一下Spring手冊
<!-- 啟用快取註解功能,這個是必須的,否則註解不會生效,另外,該註解一定要宣告在spring主配置檔案中才會生效
-->
<cache:annotation-driven cache-manager="cacheManager" />
<!--初始化快取管理器
-->
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager">
<constructor-arg
ref="redisTemplate" />
</bean>
注意:在使用快取的時候,一定要定義快取管理器為id="cacheManager"
定義其他名字,伺服器已啟動就報找不到cacheManager,應該是spring快取內建需要這個bean
程式碼樣例
@CacheConfig(cacheNames={IUserManager.cacheName})
public class UserManager implements IUserManager {
@Autowired
private IUserMapper userMapper;
@Override
@CacheEvict(allEntries=true)
public void updateUser(User
user) {
System.out.println("update"+ user.getId);
userMapper.updateUser(user);
}
@Override
@Cacheable(key="#root.methodName+#root.args[0]+#root.args[1]")
public List<User> getAll(int pageNum,int pageSize)
{
PageHelper.startPage(pageNum, pageSize);
List<User> userList=userMapper.getAll();
return userList;
}
}
相關注解
1、@Cacheable
@Cacheable 可以標記在一個方法上,也可以標記在一個類上。當標記在一個方法上時表示該方法是支援快取的,當標記在一個類上時則表示該類所有的方法都是支援快取的。
@Cacheable(value=”accountCache”),這個註釋的意思是,當呼叫這個方法的時候,會從一個名叫 accountCache 的快取中查詢,如果沒有,則執行實際的方法(即查詢資料庫),並將執行的結果存入快取中,否則返回快取中的物件。這裡的快取中的key 就是引數 userName,value 就是Account 物件。“accountCache”快取是在 spring*.xml
中定義的名稱。
2、@CachePut
@CachePut 的作用
主要針對方法配置,能夠根據方法的請求引數對其結果進行快取,和 @Cacheable
不同的是,它每次都會觸發真實方法的呼叫
@CachePut 註釋,這個註釋可以確保方法被執行,同時方法的返回值也被記錄到快取中,實現快取與資料庫的同步更新。
3、@CacheEvict
@CachEvict 的作用
主要針對方法配置,能夠根據一定的條件對快取進行清空
@CacheConfig
所有的@Cacheable()裡面都有一個value=“xxx”的屬性,這顯然如果方法多了,寫起來也是挺累的,如果可以一次性宣告完那就省事了,
所以,有了
@CacheConfig這個配置,@CacheConfig is a class-level annotation that
allows to share the cache names,如果你在你的方法寫別的名字,那麼依然以方法的名字為準。
相關文章
- 【Android進階】RecyclerView之快取(二)AndroidView快取
- 快取工廠之Redis快取快取Redis
- Django高階之-快取Django快取
- SpringBoot快取管理(二) 整合Redis快取實現Spring Boot快取Redis
- Redis快取擊穿、快取穿透、快取雪崩Redis快取穿透
- [Redis]快取穿透/快取擊穿/快取雪崩Redis快取穿透
- Masa Framework原始碼解讀-02快取模組(分散式快取進階之多級快取)Framework原始碼快取分散式
- Redis中快取二進位制資料Redis快取
- Spring+SpringMVC+MyBatis+easyUI整合進階篇(十二)Spring整合Redis快取SpringMVCMyBatisUIRedis快取
- Spring Boot In Practice (1):Redis快取實戰Spring BootRedis快取
- Redis快取穿透Redis快取穿透
- Redis快取篇(四)快取異常Redis快取
- Redis快取穿透、快取雪崩、redis併發問題分析Redis快取穿透
- SpringBoot快取管理(三) 自定義Redis快取序列化機制Spring Boot快取Redis
- Android高手進階教程(二十四)之---Android WebView的快取!!!AndroidWebView快取
- 使用Redis和Java進行資料庫快取RedisJava資料庫快取
- Redis詳解(十二)------ 快取穿透、快取擊穿、快取雪崩Redis快取穿透
- 面試總結 —— Redis “快取穿透”、“快取擊穿”、“快取雪崩”面試Redis快取穿透
- Redis——快取穿透、快取擊穿、快取雪崩、分散式鎖Redis快取穿透分散式
- Redis快取穿透、快取雪崩、快取擊穿好好說說Redis快取穿透
- 什麼是redis快取雪崩、快取穿透、快取擊穿Redis快取穿透
- Python進階 函式快取 (Function caching)Python函式快取Function
- 如何使用 Redis 快取Redis快取
- Laravel使用Redis快取LaravelRedis快取
- redis→分散式快取Redis分散式快取
- redis快取介紹Redis快取
- Hadoop MapReduce進階 使用分散式快取進行replicated joinHadoop分散式快取
- REDIS快取穿透,快取擊穿,快取雪崩原因+解決方案Redis快取穿透
- Redis的快取穿透、快取雪崩、快取擊穿的區別Redis快取穿透
- 【Redis】快取穿透,快取擊穿,快取雪崩及解決方案Redis快取穿透
- 程式疑難雜症之1快取快取
- Python Django進階教程(六)(快取機制,CSRF)PythonDjango快取
- Redis 快取擊穿(失效)、快取穿透、快取雪崩怎麼解決?Redis快取穿透
- SpringBoot快取管理(一) 預設快取管理Spring Boot快取
- Redis快取穿透和雪崩Redis快取穿透
- SmartSql Redis 分散式快取SQLRedis分散式快取
- redis快取優化案例Redis快取優化
- Redis快取穿透與雪崩Redis快取穿透