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

网站做管理后台需要知道什么广州网站优化公司如何

网站做管理后台需要知道什么,广州网站优化公司如何,什么牛网站建设,国内优秀网站赏析1 介绍 是阿里的双极缓存,jvm-->redis-->数据库 文档:jetcache/docs/CN at master alibaba/jetcache GitHub 2 注意事项 使用的实体类一定实现序列化接口定时刷新注解,慎用 它会为每一个key创建一个定时器 :场景为&…

1 介绍

 是阿里的双极缓存,jvm-->redis-->数据库

文档:jetcache/docs/CN at master · alibaba/jetcache · GitHub

2 注意事项

  1.  使用的实体类一定实现序列化接口
  2. 定时刷新注解,慎用 它会为每一个key创建一个定时器 :场景为:key少,访问量大
  3. 注解泛型一定和方法泛型保持一致,否则报错
  4. expire:过期时间设置为-1或者不设置 过期时间68年左右。

  5. put入参key是null不会存数据,get入参为null,会报空指针。空字符串没有任务问题。使用缓存时我们要多封装一层,判断key为空时情况

  6. 版本

3 总结

 缓存类型为BOTH时:

查询流程:

单机:本地缓存默认是100条数据(初始化数据时,留后查询的数据),redis留所有数据。本地缓存查询不到时,去redis找,保存到本地缓存,同时也去除一条本地缓存数据。

集群:第一次访问服务器A时,流程同上述一样,第二次访问服务器B时,直接去redis找,保存到本地缓存。

删除api:本地和redis都会删除数据

4  实战

   4.1 pom

        <!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version></dependency><dependency><groupId>com.alicp.jetcache</groupId><artifactId>jetcache-starter-redis</artifactId><version>2.7.0</version></dependency><!--        jetcache2.7.x版本需要额外添加该依赖--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.1</version></dependency><!-- json数据工具 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version></dependency>

   4.2 启动类:

@EnableMethodCache(basePackages="com.example.jetcache.mapper")
//如果不用@CreateCache注解可以删除 EnableCreateCacheAnnotation
@EnableCreateCacheAnnotation

 4.3 配置文件

jetcache:## 统计间隔,默认值0,0表示不统计,开启后定期在控制台输出缓存信息statIntervalMinutes: 15## 默认值false, 是否将 areaName 作为远程缓存key前缀areaInCacheName: false## 本地缓存配置local:default: ## default表示全部生效,也可以指定某个cacheName## 本地缓存类型,其他可选:caffeine/linkedhashmaptype: caffeine# 指定KEY的转换方式, 可选 fastjson2,fastjson,jacksonkeyConvertor: fastjson## 远程缓存配置remote:default: ## default表示全部生效,也可以指定某个cacheNametype: redis## key转换器方式nkeyConvertor: fastjsonbroadcastChannel: projectA## redis序列化方式valueEncoder: javavalueDecoder: java## redis线程池poolConfig:minIdle: 5maxIdle: 20maxTotal: 50## redis地址与端口host: 127.0.0.1port: 6379

4.4 基础查询/删除/更新/定时刷新(慎用)

import com.alicp.jetcache.anno.*;
import com.example.jetcache.entity.User;
import org.apache.ibatis.annotations.Mapper;import java.util.List;
import java.util.concurrent.TimeUnit;@Mapper
public interface UserMapper {List<User> queryUserAll();List<User> queryUser(User user);/*** BOTH类型查询* expire 过期时间,redis和本地缓存一致* 重启服务,本地jvm消失,会先查询redis,然后存入本地缓存* 本地缓存存在,不会查询redis*** @param id* @return*/@Cached(name="userCache:", key="#id", expire = 15 ,cacheType = CacheType.BOTH)/*** 只要是查询过的数据,就会定时刷新,从未查询过,则无定时刷新* refresh: 定时器执行查询间隔时间-每过36秒就会执行一次定时器* stopRefreshAfterLastAccess: 表示多久不使用对应的key缓存则会停止刷新。,如果不指定会一直刷新
refreshLockTimeout:类型为BOTH/REMOTE的缓存刷新时,同时只会有一台服务器在刷新,这台服务器会在远程缓存放置一个分布式锁,此配置指定该锁的超时时间*/@CacheRefresh(refresh = 36, stopRefreshAfterLastAccess = 3600, timeUnit = TimeUnit.SECONDS)/*** 注解作用——当缓存访问【未命中】的情况下,对并发进行的加载行为进行保护;当前版本实现的是单JVM内的保护,即同一个JVM中同一个key只有一个线程去加载,其它线程等待结果*/@CachePenetrationProtectList<User> queryUserById(String id);/*** 删除* @param id* @return*/@CacheInvalidate(name="userCache.", key="#id")int delById(int id);@CacheUpdate(name="userCache.", key="#user.id", value="#user")int save(User user);}

 4.5 CreateCache

          //无则新增,有则覆盖
         userCache.put(id,users);
         //删除
         userCache.remove(id);

       //删除所有数据暂无api

      

 方式一:废弃了

    @CreateCache(name= "userCache:", expire = 3600,cacheType = CacheType.BOTH)private Cache<String, List<User>> userCache;@PostMapping(value = "/queryUserById")public List<User> queryUserById(@RequestParam String id)  {if(CollectionUtil.isNotEmpty(userCache.get(id) )){return  userCache.get(id);}List<User> users = userMapper.queryUserById(id);//无则新增,有则覆盖userCache.put(id,users);return users;}

方式二:spring注入直接使用,如上图使用API

   @Autowired
    private Cache<Long, Object> userCache;

@Configuration
public class JetCacheConfig {@Autowiredprivate CacheManager cacheManager;private Cache<String, List<User>> userCache;@Resource(name = "userMapper")private UserMapper userMapper;@PostConstructpublic void init(){QuickConfig qc = QuickConfig.newBuilder("userCache:").expire(Duration.ofSeconds(3600)).cacheType(CacheType.BOTH)//true 集群模式下,任何本地缓存都会强制删除缓存,fasle,则请求到哪个服务,哪个服务删除本地缓存,其他服务本地缓存保持不变// 本地缓存更新后,将在所有的节点中删除缓存,以保持强一致性// 两级缓存的情况下,缓存更新时发消息让其它JVM实例中的缓存失效,需要配置broadcastChannel才生效.syncLocal(true)// 默认100 后面数据会挤掉前面的数据  本地缓存元素个数限制,只对CacheType.LOCAL和CacheType.BOTH有效.localLimit(100)//不存在时则执行这个方法.loader(this::loadOrderSumFromDatabase)//newPolicy: 定时器执行查询间隔时间// stopRefreshAfterLastAccess:表示多久不使用对应的key缓存则会停止刷新。//  .refreshPolicy(RefreshPolicy.newPolicy(6, TimeUnit.SECONDS).stopRefreshAfterLastAccess(10, TimeUnit.SECONDS))//cache穿透保护注释表示缓存将在多线程环境中同步加载。.penetrationProtect(true).build();userCache = cacheManager.getOrCreateCache(qc);//查询数据库,初始化全部数据// userCache.putAll();}private List<User> loadOrderSumFromDatabase(String id) {return userMapper.queryUserById(id);}@Beanpublic Cache<String, List<User>> getUserCache(){return userCache;}
}

http://www.hkea.cn/news/730788/

相关文章:

  • 做地方网站能赚钱吗免费seo网站诊断
  • 图片设计在线网站推广优化外包便宜
  • 武汉平价做网站网络软文推广案例
  • 新产品线上推广方案鞍山seo外包
  • 网站建网站建设和优佛山网络推广培训
  • 毕业设计做网站怎么样微信crm管理系统
  • 个人网站开发多少钱电脑培训班零基础
  • 互联网有哪些岗位宁波免费seo在线优化
  • 惠州做棋牌网站建设哪家技术好哪里的网络推广培训好
  • 如何做线上赌博的网站推广策略有哪些方法
  • 男的女的做那个视频网站百度收录需要多久
  • 大通县wap网站建设公司网站免费制作
  • 哪个网站教做公众号甘肃百度推广电话
  • 网站怎么让百度收录广告网络推广
  • 小型网站设计及建设论文定制网站制作公司
  • 视频网站建设费用排名优化网站seo排名
  • 怎么自己做网站服务器linux百度账号查询
  • 梧州网站推广方案百度热搜 百度指数
  • 网站不兼容ie6自助建站模板
  • 甘肃网站建设公司百中搜优化软件
  • 国内外贸网站建设公司seo教程 百度网盘
  • 一物一码二维码生成系统最好用的系统优化软件
  • 如何在大网站做外链镇江网站建站
  • 杭州网站建设公司导航短视频营销案例
  • 昆明做网站建设有哪些长尾关键词排名工具
  • 一女被多男做的视频网站网站seo系统
  • 网站建设 青海网站建设找哪家好
  • win7 网站配置优化方案官网电子版
  • 广州seo优化公司排名浙江seo博客
  • 全网推广的方式有哪些抖音seo推荐算法