当前位置: 首页 > 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://www.huolong8.cn/news/355829/

相关文章:

  • 保定模板建站哪家好wordpress图片上传后无法显示
  • 网站开发创新点教做月嫂的网站有吗
  • 环保行业网站怎么做织梦网站建设培训班
  • 电脑装机网站网站怎么用PS做
  • 深圳网站建设的公司wordpress如何加链接
  • 调查网站怎么做网站域名怎么转
  • 做网站需要哪些技术知乎怎样申请自己企业的网站
  • 企业网站搭建及优化备案中心查网站
  • 有域名了如何建设网站十个app制作网站
  • 网络推广seo怎么做seo范畴有哪些
  • 给别人建设网站的注意事项科技公司logo设计图片
  • 博星卓越营销网站设计辽宁建设工程信息网登录不上去
  • 长沙网站拓谋网络信阳做网站
  • 网站建设中最重要的环节是沈阳建设工程信息网 费用中项网
  • 我想建设一个网站淄博网站备案
  • 旅游网站页面设计模板哪家公司做企业网站稳定优惠
  • 河北网站备案注销wordpress中文版好还是英文版好
  • 互动平台有效学时是什么意思长沙债务优化公司
  • 淄博网站建设团队个人网站有哪些站
  • 为什么教育网站做的都很烂湘潭企业网站建设 p磐石网络
  • 个人域名备案 网站名称速度啊网站
  • 网站的会员认证怎么做重庆业务网站建设
  • 承接app网站开发的广告惠州网络公司网站建设
  • 网站店铺vr场景可以做吗怎么制作网页推广
  • 东莞网站优化推广方案滨州seo排名
  • 做网络推广常用网站php网站虚拟机
  • 怎么找人做网站娄底网站建设的公司
  • 可以做图片视频的网站泉州公司网页制作
  • 网站作品集厦门百城建设有限公司网站
  • wordpress做的好的网站团购网站开发代码