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

wordpress制作上传图片网站产品怎么优化

wordpress制作上传图片,网站产品怎么优化,wordpress rewrite插件,wordpress ciphpdown缓存击穿(热点key): 部分key(被高并发访问且缓存重建业务复杂的)失效,无数请求会直接到数据库,造成巨大压力 1.互斥锁:可以保证强一致性 线程一:未命中之后,获取互斥锁,再查询数据库重建缓存,写…

缓存击穿(热点key): 部分key(被高并发访问且缓存重建业务复杂的)失效,无数请求会直接到数据库,造成巨大压力

1.互斥锁:可以保证强一致性

      线程一:未命中之后,获取互斥锁,再查询数据库重建缓存,写入缓存,释放锁

      线程二:查询未命中,未获得锁(已由线程一获得),等待一会,缓存命中

互斥锁实现方式:redis中setnx key value:改变对应key的value,仅当value不存在时执行,以此来实现互斥锁,防止出现锁得不到释放,设置有效期

public Shop queryWithMutex(Long id) throws InterruptedException {Shop shop;//实现互斥锁,解决缓存击穿String key=CACHE_SHOP_KEY+id;//1.从redis查询商铺缓存String shopJson=stringRedisTemplate.opsForValue().get(key);//2.判断是否存在,isNotBlank("")也为falseif(StrUtil.isNotBlank(shopJson)){//3.存在,返回商铺对象return JSONUtil.toBean(shopJson,Shop.class);}//判断命中的是否为空值if(shopJson != null && shopJson.isEmpty()){return null;}//4.实现缓存重建String lockKey=LOCK_SHOP_KEY+id;//4.1.获取互斥锁boolean isLock=tryLock("lockKey");//4.2.判断互斥锁是否成功if(!isLock){//4.3.未成功,等待Thread.sleep(50);//递归shop=queryWithMutex(id);}else{//4.4.成功,从mysql数据库中查询shop=getById(id);//5.判断是否存在if(shop==null){//缓存空值,处理缓存穿透stringRedisTemplate.opsForValue().set(key,"",CACHE_NULL_TTL,TimeUnit.MINUTES);return null;}//6.存在,向redis中缓存店铺数据stringRedisTemplate.opsForValue().set(key,JSONUtil.toJsonStr(shop),LOGIN_USER_TTL, TimeUnit.MINUTES);//7.释放互斥锁unlock(lockKey);}//8.返回return shop;}

2.逻辑过期:

      不存TTL,添加上逻辑过期时间,判断逻辑上有没有过期,以此来更新数据

      线程一:查询缓存,逻辑已过期,获取互斥锁,开启新线程,返回过期数据

               新线程:查询数据库并重建缓存,重置逻辑过期时间,释放锁

      线程二:查询未命中,未获得锁(已由线程一获得),返回过期数据

 private boolean tryLock(String key){//尝试获得互斥锁Boolean flag=stringRedisTemplate.opsForValue().setIfAbsent("key","1",LOCK_SHOP_TTL,TimeUnit.SECONDS);return BooleanUtil.isTrue(flag);//通过工具类将其转化为基本类型}private void unlock(String key){//删除锁stringRedisTemplate.delete("key");}

实现互斥锁相关的方法

//线程池,有10个线程private static final ExecutorService CACHE_REBUILD_EXECUTOR= Executors.newFixedThreadPool(10);

创建线程池

public Shop queryWithLogicalExpire(Long id) {//实现逻辑过期,解决缓存击穿(不存在缓存穿透问题)String key=CACHE_SHOP_KEY+id;String lockKey=LOCK_SHOP_KEY+id;//1.从redis查询商铺缓存String shopJson=stringRedisTemplate.opsForValue().get(key);//2.判断是否存在if(StrUtil.isBlank(shopJson)){//3.不存在,返回nullreturn null;}//4.存在,判断是否过期//将Json反序列化成RedisDate对象RedisData redisData=JSONUtil.toBean(shopJson,RedisData.class);Shop shop=JSONUtil.toBean((JSONObject)redisData.getData(),Shop.class);//5.过期if(LocalDateTime.now().isAfter(redisData.getExpireTime())){//6.缓存重建//6.1.获取互斥锁boolean isLock=tryLock(lockKey);//6.2.获取成功if(isLock){//开启新线程CACHE_REBUILD_EXECUTOR.submit(()->{try {saveShopToRedis(id, 20L);}catch(Exception e){throw new RuntimeException(e);}finally {//释放锁unlock(lockKey);}});}//6.3.获取失败return shop;}return shop;}

逻辑删除相关方法

http://www.tj-hxxt.cn/news/59962.html

相关文章:

  • 南京网站建设苏icp备公司seo是什么职位
  • seo优化范畴优化服务平台
  • 在网站里怎么做复制的按钮站长分析工具
  • 网站开发移动端多少钱大的网站建设公司
  • 平面设计做画册用网站百度公司的业务范围
  • 工业设计作品网站自助网站建设平台
  • 武汉珞珈网站建设如何制作一个简易网站
  • 深圳金鼎网站建设搜狗站长
  • dede美女图片网站模板网址导航下载到桌面
  • 成都做公司网站推广百度指数的数值代表什么
  • 46设计网站官网电商培训课程
  • 赶集网站建设多少钱网络营销包括
  • 兴宁电子商务网站建设优化设计五年级下册数学答案
  • 做旅游宣传网站的流程网站多久被百度收录
  • wordpress中文cms主题武汉seo诊断
  • 汉中做网站的公司百度怎么发帖做推广
  • 潍坊网站建设建站关键词优化排名网站
  • 世界经理人网站手机版网站推广要点
  • 中午网站做google广告好吗营销推广方式
  • 集团网站开发宁波网站建设网站排名优化
  • 金华哪里有做网站的公司4000-262-合肥seo优化
  • 网站建设的报价为什么不同软文什么意思
  • 成品网站是什么意思百度商家入驻
  • 惠州网站建设服务google search
  • 郑州做网站推广地链接交换
  • 微网站自己怎么做的吗福建网络seo关键词优化教程
  • 网站config配置教程seo 优化一般包括哪些内容
  • 商务咨询网站源码软文营销案例文章
  • 服装网都有哪些网站营销平台
  • 做网站可以抄袭别人吗淘宝搜索排名