重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
???? ???? org.springframework.boot ???? ????spring-boot-starter-data-redis ???? com.alibaba ????fastjson ????1.2.62
#?Redis數據庫索引(默認為0)?? spring.redis.database=0?? #?Redis服務器地址?? spring.redis.host=localhost #?Redis服務器連接端口?? spring.redis.port=6379?? #?Redis服務器連接密碼(默認為空)?? spring.redis.password=123456 #?連接池大連接數(使用負值表示沒有限制)?? spring.redis.pool.max-active=200?? #?連接池大阻塞等待時間(使用負值表示沒有限制)?? spring.redis.pool.max-wait=-1?? #?連接池中的大空閑連接?? spring.redis.pool.max-idle=10? #?連接池中的最小空閑連接?? spring.redis.pool.min-idle=0?? #?連接超時時間(毫秒)?? spring.redis.timeout=1000ms
@Configuration @ConditionalOnClass(RedisOperations.class)??????//系統中有RedisOperations類時 @EnableConfigurationProperties(RedisProperties.class)??//啟動RedisProperties這個類 @EnableCaching //?www.1b23.com public?class?RedisConfig?extends?CachingConfigurerSupport?{ ????@Autowired ????RedisTemplate?redisTemplate; ????//?配置緩存管理器 ????@Bean ????public?RedisCacheManager?cacheManager(RedisConnectionFactory?connectionFactory)?{ ????????LettuceConnectionFactory?jedisConnectionFactory?=?(LettuceConnectionFactory)?redisTemplate.getConnectionFactory(); ????????jedisConnectionFactory.setDatabase(2);??????//指定dbindex ????????redisTemplate.setConnectionFactory(jedisConnectionFactory); ????????jedisConnectionFactory.resetConnection(); ????????RedisCacheConfiguration?config?=?RedisCacheConfiguration.defaultCacheConfig() ????????????????.entryTtl(Duration.ofSeconds(60*20))?//?20分鐘緩存失效 ????????????????//?設置key的序列化方式 //????????????????.entryTtl(Duration.ofSeconds(10)) ????????????????.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new?StringRedisSerializer())) ????????????????//?設置value的序列化方式 ????????????????.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new?FastJsonRedisSerializer(Object.class))) ????????????????//?不緩存null值 ????????????????.disableCachingNullValues(); ????????RedisCacheManager?redisCacheManager?=?RedisCacheManager.builder(connectionFactory) ????????????????.cacheDefaults(config) ????????????????.transactionAware() ????????????????.build(); ????????return?redisCacheManager; ????} }
package?com.FireService.config; import?java.nio.charset.Charset; import?org.springframework.data.redis.serializer.RedisSerializer; import?org.springframework.data.redis.serializer.SerializationException; import?com.alibaba.fastjson.JSON; import?com.alibaba.fastjson.parser.ParserConfig; import?com.alibaba.fastjson.serializer.SerializerFeature; public?class?FastJsonRedisSerializer?implements?RedisSerializer ?{ ????public?static?final?Charset?DEFAULT_CHARSET?=?Charset.forName("UTF-8"); ????private?Class ?clazz; ????static?{ ????????ParserConfig.getGlobalInstance().addAccept("com.FireService"); ????} ????public?FastJsonRedisSerializer(Class ?clazz)?{ ????????super(); ????????this.clazz?=?clazz; ????} ????@Override ????public?byte[]?serialize(T?t)?throws?SerializationException?{ ????????if?(null?==?t)?{ ????????????return?new?byte[0]; ????????} ????????return?JSON.toJSONString(t,?SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET); ????} ????@Override ????public?T?deserialize(byte[]?bytes)?throws?SerializationException?{ ????????if?(null?==?bytes?||?bytes.length?<=?0)?{ ????????????return?null; ????????} ????????String?str?=?new?String(bytes,?DEFAULT_CHARSET); ????????return?(T)?JSON.parseObject(str,?clazz); ????} }
@Cacheable:查詢
可選屬性:
cacheNames/value:指定緩存組件的名字;
key:緩存數據使用的key,可以用來指定。默認即使用方法參數的值
keyGenerator:key的生成器,可以自己指定key的生成器的組件id
//自定義配置類配置keyGenerator @Configuration public?class?MyCacheConfig?{ ????@Bean("myKeyGenerator") ????public?KeyGenerator?keyGenerator(){ ????????return?new?KeyGenerator()?{ ????????????@Override ????????????public?Object?generate(Object?target,?Method?method,?Object...?params)?{ ????????????????return?method.getName()+"["+?Arrays.asList(params).toString()?+"]"; ????????????} ????????}; ????} }
cacheManager:指定緩存管理器;或者cacheResolver獲取指定解析器
condition:指定符合條件的情況下才緩存;如condition="#id>0"
unless:否定緩存,當unless指定的條件為true,方法的返回值不會被緩存,可以獲取到結果進行判斷;如unless="#result==null";
sync:是否使用異步模式
例如:
@Cacheable(value?=?"RedisInfo",?key?=?"#root.methodName+'['+#account+']'") @ResponseBody @RequestMapping("/RedisTest") public?Result?findUserOrder(String?account)?throws?Exception{ ????if(account!=null)?{ ????????List
運行項目查看結果
1.第一次訪問
查看Druid連接信息
創新互聯www.cdcxhl.cn,專業提供香港、美國云服務器,動態BGP最優骨干路由自動選擇,持續穩定高效的網絡助力業務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節活動現已開啟,新人活動云服務器買多久送多久。