真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

springbootcache-創(chuàng)新互聯(lián)

springboot 使用@EnableCaching開啟cache功能,通過@Cacheable @CachePut等一些注解使得用戶可以方便的使用cache,cache其實(shí)就是一個(gè)緩存數(shù)據(jù)的地方,就是一塊內(nèi)存,這塊內(nèi)存的組織形式可以有很多,

網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作服務(wù)團(tuán)隊(duì)是一支充滿著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠為客戶提供服務(wù)是我們的理念。創(chuàng)新互聯(lián)建站把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來開發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!

可以是hashmap或者是redis等等,springboot 提供了兩個(gè)接口來管理cache,CacheManager和Cache,CacheManager只是提供兩個(gè)方法,用于獲取Cache的實(shí)現(xiàn)類

,Cache的實(shí)現(xiàn)類則是真正對(duì)cache的抽象。在springboot中提供了一些cache的實(shí)現(xiàn)方式,如下

  • Generic

  • JCache (JSR-107) (EhCache 3, Hazelcast, Infinispan, etc)

  • EhCache 2.x

  • Hazelcast

  • Infinispan

  • Couchbase

  • Redis

  • Caffeine

  • Guava (deprecated)

  • Simple

在springboot中關(guān)于cache提供了以上那些方式的配置類,比如redis是RedisCacheConfiguration,這些配置類會(huì)按順序被掃描,當(dāng)然這些配置類被加載是有條件的,如果這些配置類由于條件所限都沒能加載,系統(tǒng)默認(rèn)選擇SimpleCacheConfiguration,因?yàn)槿绻蠹业臈l件都不滿足時(shí),它的條件就滿足了。如果想使用redis作為緩存,需要加入以下依賴:


org.springframework.boot
 spring-boot-starter-data-redis
 1.5.9.RELEASE
 

然后RedisCacheConfiguration條件中需要的jar就會(huì)被加載了,此時(shí)cacheManger的實(shí)現(xiàn)類就是RedisCacheManager了,由于spring容器中有了cacheManger,排在后面的實(shí)現(xiàn)就不會(huì)加載了,因?yàn)樗麄兊募虞d條件中都有@ConditionalOnMissingBean(CacheManager.class)。處理添加依賴,還需要在application.properties中寫入redis的相關(guān)配置,比如:

# Redis數(shù)據(jù)庫索引(默認(rèn)為0)
spring.redis.database=0
# Redis服務(wù)器地址
spring.redis.host=127.0.0.1
# Redis服務(wù)器連接端口
spring.redis.port=6379
# Redis服務(wù)器連接密碼(默認(rèn)為空)
spring.redis.password=
# 連接池大連接數(shù)(使用負(fù)值表示沒有限制)
spring.redis.pool.max-active=8
# 連接池大阻塞等待時(shí)間(使用負(fù)值表示沒有限制)
spring.redis.pool.max-wait=-1
# 連接池中的大空閑連接
spring.redis.pool.max-idle=8
# 連接池中的最小空閑連接
spring.redis.pool.min-idle=0
# 連接超時(shí)時(shí)間(毫秒)
spring.redis.timeout=0

之后redis cache就可以使用了,但這里有個(gè)問題,如果想通過redis客戶的查看寫到redis里的內(nèi)容時(shí)會(huì)出現(xiàn)\xab\xa0之類的數(shù)據(jù),而不是我們表面通過@cacheput或@cahceable中定義的key 和value,這個(gè)問題的根因是redis的序列化問題,springboot提供的RedisTemplate里的keySerializer valueSerializer等是JdkSerializationRedisSerializer,該類是把object串行化為byte,也就是如果用@cahceput寫入的key是int類型,他會(huì)先把int變?yōu)榘b類,然后串行化為byte寫入redis,所以會(huì)看到\xab\xa0之類的數(shù)據(jù),這些都是object串行化之后的結(jié)果。如果想看到正常的數(shù)據(jù)就需要自己寫一個(gè)配置類,里面定義自己的RedisTemplatebean,然后配置keySerializer valueSerializer,例如:
@Configuration  
@EnableCaching
public class RedisConfig {
   @Bean  
   public CacheManager cacheManager(RedisTemplate redisTemplate) {  
       RedisCacheManager manager = new RedisCacheManager(redisTemplate);  
       manager.setDefaultExpiration(20);//設(shè)置默認(rèn)過期時(shí)間  
       return manager;  
   }  
 
   @Bean  
   public RedisTemplate redisTemplate(RedisConnectionFactory factory) {  
       StringRedisTemplate template = new StringRedisTemplate(factory);  
       Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);  
       ObjectMapper om = new ObjectMapper();  
       om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);  
       om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);  
       jackson2JsonRedisSerializer.setObjectMapper(om);  
       template.setValueSerializer(jackson2JsonRedisSerializer);  
       template.afterPropertiesSet();  
       return template;  
   }  
     
   @Bean  
   public KeyGenerator smpkeyGenerator() {  
       return new KeyGenerator() {  
//           @Override  
           public Object generate(Object target, Method method, Object... params) {  
               StringBuilder sb = new StringBuilder();  
               //sb.append(target.getClass().getSimpleName());  
               //sb.append(method.getName());  
               for (Object o : params) {  
                   sb.append("_").append(o.toString());  
               }  
               return sb.toString();  
           }  
       };  
   }  
}


springboot cache

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


分享標(biāo)題:springbootcache-創(chuàng)新互聯(lián)
URL標(biāo)題:http://weahome.cn/article/icish.html

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部