经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring Boot » 查看文章
使用@Cacheable缓存解决双冒号::的问题
来源:jb51  时间:2021/12/31 10:40:51  对本文有异议

@Cacheable缓存解决双冒号::

使用spring-data-redis2.x版本时,@Cacheable缓存key值时默认会给vlue或cacheNames后加上双引号

通过配置进行修改即可满足项目需求

  1. @Configuration
  2. public class SpringCacheConfig{
  3. @Bean
  4. public CacheManager cacheManager(LettuceConnectionFactory lettuceConnectionFactory){
  5. RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
  6. .entryTtl(Duration.ofHour(1)
  7. //变双冒号为单冒号
  8. .computePrefixWith(name - >":")
  9. .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
  10. .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()))
  11. .disableCachingNullValues();
  12. RedisCacheManager cacheManager = RedisCacheManager.RedisCacheManagerBuilder
  13. .fromConnectionFactory(lettuceConnectionFactory)
  14. .cacheDefaults(config)
  15. .transactionAware()
  16. .build();
  17. return cacheManager;
  18. }
  19. ...其他配置
  20. }

Cacheable的使用总结

  1. @Cacheable(value = "PERSON",key = "#tagId+'_'+#zz")
  2. public List<Person> getPersonByTagid(Long tagId,String zz)

其中value表示该方法返回的参数的缓存存在那个Cache里(即为缓存块的名字)

缓存结果以一个键值对存放在缓存中,注解中key即为键值对的key;value即为方法返回的结果

key用双引号,里面#加上方法的参数:获取方法的参数, ''表示在参数之间添加分隔符

常规使用方法

在springboot的启动类上使用@EnableCaching//开启缓存

在方法上直接使用@Cacheable()使用缓存

以上为个人经验,希望能给大家一个参考,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号