当前位置: 首页 > news >正文

网站名称和备案公司名称不一样厦门关键词优化企业

网站名称和备案公司名称不一样,厦门关键词优化企业,wordpress搭建网盘,qq官方官网入口一、简介 缓存介绍 缓存#xff0c;在我们的日常开发中用的非常多#xff0c;是我们应对各种性能问题支持高并发的一大利器。 Spring 从 3.1 开始就引入了缓存的支持。定义了如下两个接口来统一支持不同的缓存技术。 org.springframework.cache.Cacheorg.springframework.ca…一、简介 缓存介绍 缓存在我们的日常开发中用的非常多是我们应对各种性能问题支持高并发的一大利器。 Spring 从 3.1 开始就引入了缓存的支持。定义了如下两个接口来统一支持不同的缓存技术。 org.springframework.cache.Cacheorg.springframework.cache.CacheManager 我们熟知的缓存有堆缓存Ehcache3.x、Guava Cache、Caffeine等、堆外缓存Ehcache3.x、MapDB等、分布式缓存Redis、Memcached等等等。 常用的缓存注解EnableCaching、Cacheable、CachePut、CacheEvict、 Cache 和 CacheManager 接口说明 Cache 接口包含缓存的各种操作集合你操作缓存就是通过这个接口来操作的。Cache 接口下 Spring 提供了各种 xxxCache 的实现比如RedisCache、EhCache、ConcurrentMapCache等。CacheManager 定义了创建、配置、获取、管理和控制多个唯一命名的 Cache。这些 Cache 存在于 CacheManager 的上下文中。 二、缓存实战 1.开启缓存 在 SpringBoot 的启动类上添加注解EnableCaching。 2.Cacheable Cacheable 的作用 主要针对方法配置能够根据方法的请求参数对其结果进行缓存。 常用属性 cacheNames、value用来指定缓存组件名称。 Cacheable(cacheNames users, key#id) public User getUser(Integer id) {}key缓存数据的 key可以用它来指定。默认使用所有参数的值进行组合。key可以使用 spEL 表达式来编写。 Cacheable(cacheNames usersBySpEL, key#root.methodName [ #id ]) public User getUserBySpEL(Integer id) {}keyGeneratorkey 的生成器。key 和 keyGenerator 二选一使用。 Cacheable(cacheNames userByKeyGenerator, keyGenerator myKeyGenerator) public User getUserByKeyGenerator(Integer id) {}condition指定符合条件的情况下才缓存。 Cacheable(cacheNames userByCondition, condition #id 1) public User getUserByCondition(Integer id) {}unless指定不符合条件的情况下才缓存。可以获取到结果进行判断通过 #result 获取方法结果unless汉语意思除非指会缓存除了。。。之外。 Cacheable(cacheNames userByUnless, unless #id 1) public User getUserByUnless(Integer id) {}sync是否使用异步模式。 3.CachePut CachePut 的作用 主要针对配置能够根据方法的请求参数对其结果进行缓存。 区别于 Cacheable它每次都会触发真实方法的调用可以保证缓存的一致性。属性与 Cacheable 类同。 CachePut(cacheNames users , key #user.id) public User addUser(User user) {}4.CacheEvict CacheEvict 的作用 主要针对方法配置能够根据一定的条件对缓存进行清空。 常用属性 cacheNames、value用来指定缓存组件名称。key缓存数据的 key可以用它来指定。默认使用所有参数的值进行组合。key可以使用 spEL 表达式来编写。condition指定符合条件的情况下的缓存。allEntries是否清空所有缓存缺省为false。beforeInvocation是否在方法执行前就清空缺省为false缺省情况下如果方法执行抛异常则不会清空缓存。 CacheEvict(cacheNames users, key #id) public void delUserCache(Integer id) {}5.CacheConfig CacheConfig 的作用 主要针对类配置能够设置当前类中 Cacheable 的 value 属性默认值。当然如果 Cacheable 设置了 value还是以设置的值为准。 常用属性 cacheNames 指定缓存名称默认值。 6.Caching Caching 的作用 主要针对方法配置能够组合多个Cache注解。比如用户新增成功后我们可能需要添加 id - user、username - user、email - user 的缓存此时就需要 Caching 组合多个注解标签了。 常用属性 cacheable组合多个 Cacheable 注解put组合多个 CachePut 注解evict组合多个 CacheEvict 注解 CacheConfig(cacheNames users) public class CacheTestServiceImpl implements CacheTestService {/*** Cacheable 的 cacheNames 默认为 users*/Cacheable(key#id)public User getUser(Integer id) {...} }7.自定义缓存过期时间 7.1 设置全局默认缓存过期时间 // 提供默认的cacheManager应用于全局实现存活2天BeanPrimarypublic CacheManager defaultCacheManager(RedisTemplate?, ? redisTemplate) {RedisCacheWriter writer RedisCacheWriter.lockingRedisCacheWriter(redisTemplate.getConnectionFactory());RedisCacheConfiguration config RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofDays(2));return new RedisCacheManager(writer, config);}7.2 定制部分缓存过期时间 定制缓存过期时间需要自定义RedisCacheManager来实现ttl设置。注意项目中如已配置了RedisCacheManager需要在原配置的bean上添加注解 Primary以免造成干扰 /**自定义RedisCacheManager用于在使用Cacheable时设置ttl*/Beanpublic RedisCacheManager selfCacheManager(RedisTemplateString, Object redisTemplate) {RedisCacheWriter redisCacheWriter RedisCacheWriter.nonLockingRedisCacheWriter(redisTemplate.getConnectionFactory());RedisCacheConfiguration redisCacheConfiguration RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getValueSerializer()));return new SelfRedisCacheManager(redisCacheWriter, redisCacheConfiguration);}SelfRedisCacheManager.java public class SelfRedisCacheManager extends RedisCacheManager {public SelfRedisCacheManager(RedisCacheWriter cacheWriter, RedisCacheConfiguration defaultCacheConfiguration) {super(cacheWriter, defaultCacheConfiguration);}Overrideprotected RedisCache createRedisCache(String name, RedisCacheConfiguration cacheConfig) {String[] cells StringUtils.delimitedListToStringArray(name, );name cells[0];if (cells.length 1) {long ttl Long.parseLong(cells[1]);// 根据传参设置缓存失效时间默认单位是秒cacheConfig cacheConfig.entryTtl(Duration.ofSeconds(ttl));}return super.createRedisCache(name, cacheConfig);} } 使用 // value、cacheNames是等效的,ttl600sunless是不缓存的结果为null时不缓存 Cacheable(value p_user600key #menu_#type_#userIdcacheManager selfCacheManager, unless #result null public User getUser(...){xxx }// 当前方法执行时对应的key失效,也可以用CachePut在当前方法执行时更新key CacheEvict(cacheNames p_userkey #p.menu_#p.type_#p.user public boolean setUser(User p){xxx } 三、spEL表达式 参考地址 1.Cacheable设置过期时间https://blog.csdn.net/weixin_41860719/article/details/125226096
http://wiki.neutronadmin.com/news/355829/

相关文章:

  • 让网站引用字体开发者账号是干嘛用的
  • 山东网站建设哪里好建设银行个人网站显示不了
  • 网站顶部悬浮导航代码官方网站下载12306
  • html5网站建设企业论文高密哪里做网站
  • 做零食网站怎么样网络推广公司营销方案
  • 温州网站设计服务商大连做网站哪家好一点
  • 花生壳可做网站吗成都城乡建设部网站首页
  • 中唯建设工程有限公司网站学校网站建设说明书
  • 深圳网站建设方案书东莞阳光网英语口语大赛官网
  • 网站建设综合训练的实验目的互联网项目发布平台
  • 淘宝网站建设不允许网站开发书籍
  • 免费网站模板带后台有哪些好的建站平台
  • 哪里有做网站app的大疫不过三年
  • 设计君网站博客社区类网站模板
  • 网站托管服务内容泉州疾控中心发布最新消息
  • 苏州网站建设建站网做外贸用什么网站比较好
  • 海淀做网站公司沙漠风网站建设
  • 有需要做网站推广找我扬州市市政建设处网站
  • 网站开发工具 n深圳网站建设相关推荐
  • 网页设计构建的基本流程网站建设优化服务特色
  • 如何查询网站域名备案怎么制作图片文档
  • 网站建设类有哪些职位三亚网站建设美工
  • 哪些网站使用wordpress做网站服务器需要系统
  • 本墨陈黑做网站有版权wordpress主题评论制作
  • 建站平台wordpress默认摘要
  • 网站seo方法网站建设接单
  • 3合1网站建设哪家好哪个公司网站做的最好
  • 关于网站建设的介绍电商平台怎么做
  • 网站做三个月收录100设计网站公司价格
  • 企业手机端网站模板下载海南网站建设报价方案