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

做物流哪个网站推广效果好蓝色手机网站模板

做物流哪个网站推广效果好,蓝色手机网站模板,梅江区建设局网站,做网站 嵌入支付缓存击穿问题也叫热点Key问题#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的Key突然失效了#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击。 Redis实战篇 | Kyles Blog (cyborg2077.github.io) 目录 解决方案 互斥锁 实现 逻辑过期 实现 解决方案… 缓存击穿问题也叫热点Key问题就是一个被高并发访问并且缓存重建业务较复杂的Key突然失效了无数的请求访问会在瞬间给数据库带来巨大的冲击。 Redis实战篇 | Kyles Blog (cyborg2077.github.io)  目录 解决方案 互斥锁 实现 逻辑过期  实现 解决方案 互斥锁 实现 需求修改根据id查询商铺的业务基于互斥锁方式来解决缓存击穿问题 操作锁的代码 核心思路就是利用redis的setnx方法来表示获取锁如果redis没有这个key则插入成功返回1如果已经存在这个key则插入失败返回0。在StringRedisTemplate中返回true/false我们可以根据返回值来判断是否有线程成功获取到了锁 ShopServiceImpl public Shop queryWithMutex(Long id) {//先从Redis中查这里的常量值是固定的前缀 店铺idString shopJson stringRedisTemplate.opsForValue().get(CACHE_SHOP_KEY id);//如果不为空查询到了则转为Shop类型直接返回if (StrUtil.isNotBlank(shopJson)) {Shop shop JSONUtil.toBean(shopJson, Shop.class);return shop;}if (shopJson ! null) {return null;}Shop shop null;try {//否则去数据库中查boolean flag tryLock(LOCK_SHOP_KEY id);if (!flag) {Thread.sleep(50);return queryWithMutex(id);}//查不到则将空值写入Redisshop getById(id);if (shop null) {stringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY id, , CACHE_NULL_TTL, TimeUnit.MINUTES);return null;}//查到了则转为json字符串String jsonStr JSONUtil.toJsonStr(shop);//并存入redis设置TTLstringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY id, jsonStr, CACHE_SHOP_TTL, TimeUnit.MINUTES);//最终把查询到的商户信息返回给前端} catch (InterruptedException e) {throw new RuntimeException(e);} finally {unLock(LOCK_SHOP_KEY id);}return shop;} // 尝试获取锁private boolean tryLock(String key){Boolean flag stringRedisTemplate.opsForValue().setIfAbsent(key, 1, 10, TimeUnit.SECONDS);return BooleanUtil.isTrue(flag);}// 释放锁private void unLock(String key){stringRedisTemplate.delete(key);} 逻辑过期  直接在redis中设计一个永久的热点key当发现逻辑时间已过期则采用类似互斥锁方式解决缓存击穿  实现 需求根据id查询商铺的业务基于逻辑过期方式来解决缓存击穿问题思路分析当用户开始查询redis时判断是否命中 如果没有命中则直接返回空数据不查询数据库如果命中则将value取出判断value中的过期时间是否满足 如果没有过期则直接返回redis中的数据如果过期则在开启独立线程后直接返回之前的数据独立线程去重构数据重构完成后再释放互斥锁 封装数据因为现在redis中存储的数据的value需要带上过期时间此时要么你去修改原来的实体类要么新建一个类包含原有的数据和过期时间 步骤一这里我们选择新建一个实体类包含原有数据(用万能的Object)和过期时间这样对原有的代码没有侵入性 Data public class RedisDataT {private LocalDateTime expireTime;private T data; } 步骤二在ShopServiceImpl中新增方法 public void saveShop2Redis(Long id, Long expirSeconds) {Shop shop getById(id);RedisData redisData new RedisData();redisData.setData(shop);redisData.setExpireTime(LocalDateTime.now().plusSeconds(expirSeconds));stringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY id, JSONUtil.toJsonStr(redisData)); } 步骤三正式代码 正式代码我们就直接照着流程图写就好了 //这里需要声明一个线程池因为下面我们需要新建一个现成来完成重构缓存 private static final ExecutorService CACHE_REBUILD_EXECUTOR Executors.newFixedThreadPool(10);Override public Shop queryWithLogicalExpire(Long id) {//1. 从redis中查询商铺缓存String json stringRedisTemplate.opsForValue().get(CACHE_SHOP_KEY id);//2. 如果未命中则返回空if (StrUtil.isBlank(json)) {return null;}//3. 命中将json反序列化为对象RedisData redisData JSONUtil.toBean(json, RedisData.class);//3.1 将data转为Shop对象JSONObject shopJson (JSONObject) redisData.getData();Shop shop JSONUtil.toBean(shopJson, Shop.class);//3.2 获取过期时间LocalDateTime expireTime redisData.getExpireTime();//4. 判断是否过期if (LocalDateTime.now().isBefore(expireTime)) {//5. 未过期直接返回商铺信息return shop;}//6. 过期尝试获取互斥锁boolean flag tryLock(LOCK_SHOP_KEY id);//7. 获取到了锁if (flag) {//8. 开启独立线程CACHE_REBUILD_EXECUTOR.submit(() - {try {this.saveShop2Redis(id, LOCK_SHOP_TTL);} catch (Exception e) {throw new RuntimeException(e);} finally {unlock(LOCK_SHOP_KEY id);}});//9. 直接返回商铺信息return shop;}//10. 未获取到锁直接返回商铺信息return shop; }
http://www.dnsts.com.cn/news/84929.html

相关文章:

  • 国内做的比较简洁的网站乐清市腾速网络科技有限公司
  • 企业官方网站管理制度做个app平台需要多少钱
  • 网站开发目录规范公司网络规划
  • 旅游网站怎么做才能被关注用dw做的网页怎么上传到网站
  • 用自己主机做网站视频迅当网络深圳外贸网站建设
  • 用zend做饿了么网站资产管理公司网站建设方案
  • 团购网站模板网站设计网站源码
  • 盐山联通大厦 网站建设网站开发设计比赛
  • 重庆专业企业建设网站广告牌
  • 中国建设银行官网网站wordpress登录才能
  • 深圳做网站要中国建设银行网站官网网址
  • 网站文章伪原创怎么做有那种网站么
  • 苏州快速建站模板网站 备案 查询
  • 网站建设所需网站布局软件
  • 怎么修改网站关键词wordpress大学主题修改
  • 外国人爱做视频网站吗服务器买好了怎么搭建自己的网站
  • 外贸 国外推广网站做网站数据库怎么做
  • 如何做企业网站排名优化做网站和推广
  • 河南做网站推广wordpress动画效果
  • 网站建设推广公众号制作推广青岛如何能去医疗网站做编辑
  • 自己用电脑做虚拟机怎么建网站微博推广渠道
  • 网站做优化应该具备什么秀人网络科技有限公司
  • 建设网站的五个步骤是seo营销技巧培训班
  • 泰安有几个区提供邢台网站优化
  • 做网站的软件去哪里买dede做电影网站
  • 网站seo李守洪排名大师第三方网站做app
  • 做相册什么网站好外贸建设网站公司哪家好
  • 网站建设数据安全分析学校网站建设小组及分工
  • 软件推广代理深圳百度快速排名优化
  • 网站tag聚合怎么做凡科怎么建设网站