日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring cache整合redis代碼實例

瀏覽:132日期:2023-09-07 16:37:23

Spring-Cache是Spring3.1引入的基于注解的緩存技術,本質上它并不是一個具體的緩存實現,而是一個對緩存使用的抽象,通過Spring AOP技術,在原有的代碼上添加少量的注解來實現將這個方法轉成緩存方法的效果。

本來想來個分析源碼,奈何水平有限,先從實戰搞起。

先引入依賴:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>2.1.6.RELEASE</version></dependency><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.3</version></dependency>

redis配置:

server: port: 8000spring: redis: host: 23.95.x.x port: 6379 timeout: 20s database: 0 jedis: pool: max-active: 5 max-idle: 3 max-wait: 5s password: testtest

配置類:

package me.yanand.config;import org.springframework.cache.annotation.EnableCaching;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.cache.RedisCacheConfiguration;import org.springframework.data.redis.cache.RedisCacheManager;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.RedisSerializationContext;import org.springframework.data.redis.serializer.StringRedisSerializer;import java.time.Duration;@Configuration@EnableCachingpublic class RedisConfig{ private Duration timeOut = Duration.ofMinutes(30); @Bean public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) { RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()//設置緩存超時時間 30分鐘.entryTtl(timeOut)//設置key序列化方式.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))//設置value序列化方式.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())).disableCachingNullValues(); return RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(config).transactionAware().build(); }}

主要看@EnableCaching注解,這個注解引入了@Import(CachingConfigurationSelector.class),通過CachingConfigurationSelector把代理創建類、CacheInterceptor、CacheOperationSource、BeanFactoryCacheOperationSourceAdvisor注入到容器,spring通過CacheInterceptor攔截器攔截相關帶有@Cacheable、@CacheEvict、@CachePut注解的方法并執行相關緩存操作。

CacheInterceptor相關源碼:

@Nullableprivate Object execute(final CacheOperationInvoker invoker, Method method, CacheOperationContexts contexts) { if (contexts.isSynchronized()) { CacheOperationContext context = contexts.get(CacheableOperation.class).iterator().next(); //滿足條件執行 if (isConditionPassing(context, CacheOperationExpressionEvaluator.NO_RESULT)) { Object key = generateKey(context, CacheOperationExpressionEvaluator.NO_RESULT); Cache cache = context.getCaches().iterator().next(); try { //這里主要看RedisCache的get方法 return wrapCacheValue(method, cache.get(key, () -> unwrapReturnValue(invokeOperation(invoker)))); } catch (Cache.ValueRetrievalException ex) { // The invoker wraps any Throwable in a ThrowableWrapper instance so we // can just make sure that one bubbles up the stack. throw (CacheOperationInvoker.ThrowableWrapper) ex.getCause(); } } else { //不滿足直接執行相關方法 return invokeOperation(invoker); } } ...省略}

RedisCache相關代碼:

public synchronized <T> T get(Object key, Callable<T> valueLoader) { ValueWrapper result = get(key);//緩存中有值則返回 if (result != null) { return (T) result.get(); }//緩存中不存在則執行相關方法 T value = valueFromLoader(key, valueLoader); put(key, value); return value; }

注解使用:

package me.yanand.dao;import me.yanand.pojo.User;import org.springframework.cache.annotation.CacheEvict;import org.springframework.cache.annotation.Cacheable;import org.springframework.stereotype.Component;@Componentpublic class UserDao { @Cacheable(cacheNames = 'users',key = '#root.targetClass+#name', unless = '#result eq null') public User getUser(String name){ return new User('張三',30); } @CacheEvict(cacheNames = 'users', key = '#root.targetClass+#name') public void delUser(String name){ }}

測試:

Spring cache整合redis代碼實例

通過postman觸發相關方法,現在我們連上redis查看緩存寫入情況

Spring cache整合redis代碼實例

這里我們看到key已經寫入,過期時間也存在

現在我們刪除緩存

Spring cache整合redis代碼實例

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美sss在线视频| 久久精品动漫| 亚洲视频播放| av在线日韩| 亚洲福利一区| 男女激情视频一区| 日韩一区二区三免费高清在线观看| 美女精品在线| 国产欧美另类| 亚洲欧美综合| 亚洲欧美久久精品| 国产精品一区二区三区av| 国产欧美69| 天堂√8在线中文| 巨乳诱惑日韩免费av| 欧美日韩一视频区二区| a天堂资源在线| 午夜精品网站| 日韩福利视频导航| 久久99久久人婷婷精品综合| 精品久久美女| 日韩天堂在线| 国产精品日韩久久久| 日韩精品一区二区三区中文| 国产欧美日韩亚洲一区二区三区| 精品高清久久| 中文精品在线| 国产66精品| 日本一不卡视频| 福利精品一区| 最新亚洲国产| 秋霞影院一区二区三区| 亚洲无线观看| 欧美一级鲁丝片| 精品视频黄色| 免费久久99精品国产自在现线| 国产精品videossex久久发布 | 麻豆精品视频在线观看免费| 激情久久久久久久| 欧美激情 亚洲a∨综合| 一区福利视频| 欧洲av一区二区| 国产精品theporn| 亚洲丝袜啪啪| 中文精品视频| 国产精品啊啊啊| 日韩天堂av| 影视先锋久久| 欧美国产美女| 久久尤物视频| 国产精品免费大片| 久久国产乱子精品免费女| 伊人成人网在线看| 亚洲欧美日韩高清在线| 色偷偷偷在线视频播放| 国产高清视频一区二区| 日本欧美在线| 欧美中文字幕| 最新中文字幕在线播放| 国产精品伦一区二区| 91精品视频一区二区| 亚洲一区黄色| 激情综合亚洲| 伊人久久成人| 狠狠色狠狠色综合日日tαg| re久久精品视频| 老色鬼久久亚洲一区二区| 久久亚洲欧美| 欧美在线看片| 国产精品成人一区二区不卡| 在线一区av| 爽好久久久欧美精品| 午夜国产欧美理论在线播放| 999在线观看精品免费不卡网站| 久久蜜桃av| 久久夜色精品| 日本中文字幕一区二区| 国产日韩免费| 成人日韩在线| 久久av在线| 国产精品一区二区99| 色乱码一区二区三区网站| 色老板在线视频一区二区| 夜久久久久久| 麻豆视频一区二区| 日韩久久精品网| 久久国产亚洲精品| 中日韩男男gay无套| 国产精品一区亚洲| 国产美女高潮在线| 亚洲一级淫片| 卡一卡二国产精品| 国产一区二区高清| 你懂的国产精品永久在线| 激情欧美日韩一区| 国产精品nxnn| 日韩在线网址| 丝袜av一区| 国产精品一级| 亚洲在线网站| 国产精品白浆| 亚洲另类视频| 伊人久久成人| 日韩1区2区| 国产精品22p| 日韩中文字幕亚洲一区二区va在线| 青草国产精品| 在线亚洲免费| 午夜精品久久久久久久久久蜜桃| 亚洲97av| 国产精品日本| 欧美日韩国产在线一区| 日本免费一区二区三区四区| 国产精品一区高清| 美女一区网站| 国产精品a久久久久| 亚洲欧洲国产精品一区| 激情视频一区二区三区| 韩国久久久久久| 欧美国产精品| 久久不卡国产精品一区二区| 亚洲综合婷婷| 美国三级日本三级久久99 | 国产精品av久久久久久麻豆网| 亚洲精品免费观看| 日本欧美在线看| 亚洲精品国产精品粉嫩| 日本欧洲一区二区| 亚洲精品大全| 热久久免费视频| 亚洲欧美日韩在线观看a三区| 国产精品88久久久久久| 午夜电影亚洲| 亚洲天堂免费| 国产亚洲久久| 四季av一区二区凹凸精品| 日本久久精品| 亚洲二区视频| 亚洲精品一级| 亚洲视频国产精品| 欧美欧美黄在线二区| 美女毛片一区二区三区四区最新中文字幕亚洲 | 国产综合精品| 在线综合欧美| 国产区精品区| 福利欧美精品在线| 亚洲精品一二三区区别| 欧美在线精品一区| 偷拍亚洲精品| 国产精品精品| 蜜桃av一区二区| 欧美国产极品| 亚洲精品中文字幕乱码| 亚洲三级毛片| 国际精品欧美精品| 麻豆精品91| 国产一区福利| 亚洲欧美成人综合| 国产一区二区三区日韩精品| 91精品1区| 精品一区二区三区中文字幕在线| 91精品推荐| 国产欧美69| 免费看日韩精品| 国产美女久久| 国产模特精品视频久久久久| 欧美激情aⅴ一区二区三区| 亚洲四虎影院| 国产一区二区色噜噜| 日本一区免费网站| 天使萌一区二区三区免费观看| 91欧美日韩| 国产精品一页| 日韩av一区二区在线影视| 午夜欧美精品久久久久久久| 国产精品蜜芽在线观看| 日韩av一二三| 日本不卡不码高清免费观看| 亚洲男女av一区二区| 日韩电影免费网站| 国产精品mm| 久色成人在线| 日韩一区亚洲二区| 福利视频一区| 久久只有精品| 麻豆国产精品视频| 久久精品五月| 成人精品国产亚洲| 国产精品极品| 黄色欧美在线| 国产一区二区三区黄网站| 亚洲精品一二| 国产极品模特精品一二| 樱桃视频成人在线观看| 91成人精品视频| 国产美女撒尿一区二区| 精品视频一区二区三区四区五区 | 日韩电影免费网站| 午夜欧美精品久久久久久久| 亚洲三级网站|