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

服装网站建设价格建e网app

服装网站建设价格,建e网app,安仁网络推广软件定制开发,免费杂志模板目录 一、查询商品信息的常规代码示例二、缓存击穿2.1、缓存击穿的理解2.2、缓存击穿的解决方案2.3、解决缓存击穿的代码示例 三、缓存雪崩3.1、缓存雪崩的理解3.2、缓存雪崩的解决方案3.2.1、缓存集中过期的情况3.2.2、缓存服务器宕机的情况3.2.3、缓存服务器断电的情况 3.3、…

目录

    • 一、查询商品信息的常规代码示例
    • 二、缓存击穿
      • 2.1、缓存击穿的理解
      • 2.2、缓存击穿的解决方案
      • 2.3、解决缓存击穿的代码示例
    • 三、缓存雪崩
      • 3.1、缓存雪崩的理解
      • 3.2、缓存雪崩的解决方案
        • 3.2.1、缓存集中过期的情况
        • 3.2.2、缓存服务器宕机的情况
        • 3.2.3、缓存服务器断电的情况
      • 3.3、解决缓存雪崩(缓存集中过期)的代码示例
    • 四、缓存穿透
      • 4.1、缓存穿透的理解
      • 4.2、缓存穿透的解决方案
      • 4.3、解决缓存穿透的代码示例

一、查询商品信息的常规代码示例

  • 查询商品信息的常规代码示例
/**
*查询商品信息
*/
public ExpressInfo findByDeliveryOrderId(Long id){String key="xz-express:expmess-info:"//从 Redis查询物流信息Object obj = 	redisTemplate.opsForValue().get( key + id);if (obi != null) [return (ExpressInfo) obj; }else {ExpressInfo expressInfo= expressMapper,selectByDeliveryOrderId(id);//数据库查询	if(expressInfo l= nul1){ redisTemplate,opsForValue(),set(key + d,expressInfo,Duration,ofHours(2));return expressInfo;}else {throw new clientException("发货单,的物流信息不存在",id);}}
}

二、缓存击穿

2.1、缓存击穿的理解

  • 高并发时,当一个kev非常热点(类似于爆款)在不停的扛着大并发当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库并设置到缓存中,导致性能下降。
    在这里插入图片描述

2.2、缓存击穿的解决方案

  • 设置缓存永不过期
  • 加锁排队

2.3、解决缓存击穿的代码示例

  • 代码示例

    /**
    *查询商品信息
    */
    @Suppresswarnings("unchecked”)
    public ExpressInfo findByDeliveryOrderId(Long id){String key="xz-express:expmess-info:"//从 Redis查询物流信息Object obj = 	redisTemplate.opsForValue().get( key + id);if (obi == null) {synchronized (this){//进入 synchronized 一定要先再查询一次 Redis,防止上一个抢到锁的线程已经更新过了obj = 	redisTemplate.opsForValue().get( key + id);if(obj != null){return (List<ProductCategory>) obj;}//数据库查询	List<ProductCategory> categorylList = productCategoryMapper.selectProductCategory(id);redisTemplate,opsForValue().set(key,categoryList,Duration.ofHours(2L));}return categorylList ; }else {return (List<ProductCategory>) obj;}
    }
    

三、缓存雪崩

3.1、缓存雪崩的理解

  • 缓存集中过期,或者缓存服务器宕机,导致大量请求访问数据库,造成数据库瞬间压力过大,宕机。
    在这里插入图片描述

3.2、缓存雪崩的解决方案

3.2.1、缓存集中过期的情况

  • 加锁排队
  • 设置随机失效时间

3.2.2、缓存服务器宕机的情况

  • 提前部署好redis高可用集群(比如哨兵模式)

3.2.3、缓存服务器断电的情况

  • 提前做好灾备(多机房部署)

3.3、解决缓存雪崩(缓存集中过期)的代码示例

  • 代码示例

    /**
    *查询商品信息
    */
    @Suppresswarnings("unchecked”)
    public ExpressInfo findByDeliveryOrderId(Long id){String key="xz-express:expmess-info:"//从 Redis查询物流信息Object obj = 	redisTemplate.opsForValue().get( key + id);if (obi == null) {synchronized (this){//进入 synchronized 一定要先再查询一次 Redis,防止上一个抢到锁的线程已经更新过了obj = 	redisTemplate.opsForValue().get( key + id);if(obj != null){return (List<ProductCategory>) obj;}//数据库查询	List<ProductCategory> categorylList = productCategoryMapper.selectProductCategory(id);//设置随机失效时间Duration expire = DurationofHours(2L).plus(Duration.ofSeconds((Math .random() 100)));redisTemplate,opsForValue().set(key,categoryList,expire);}return categorylList ; }else {return (List<ProductCategory>) obj;}
    }
    

四、缓存穿透

4.1、缓存穿透的理解

  • 数据库不存在缓存中也不存在,导致每次请求都会去查询数据库,这时的用户很可能是攻击者如发起为id为“-1”的数据或id为特别大(不存在的数据),导致数据库压力过大或宕机。
    在这里插入图片描述

4.2、缓存穿透的解决方案

  • 参数校验
  • 缓存空对象
  • 布隆过滤器

4.3、解决缓存穿透的代码示例

  • 代码示例

    /**
    *查询商品信息
    */
    @Suppresswarnings("unchecked”)
    public ExpressInfo findByDeliveryOrderId(Long id){String key="xz-express:expmess-info:"//从 Redis查询物流信息Object obj = 	redisTemplate.opsForValue().get( key + id);if (obi == null) {synchronized (this){//进入 synchronized 一定要先再查询一次 Redis,防止上一个抢到锁的线程已经更新过了obj = 	redisTemplate.opsForValue().get( key + id);if(obj != null){return (List<ProductCategory>) obj;}//数据库查询	List<ProductCategory> categorylList = productCategoryMapper.selectProductCategory(id);//设置随机失效时间Duration expire = DurationofHours(2L).plus(Duration.ofSeconds((Math .random() 100)));//从数据库中查询出的categoryList不管是否是空,都存到redis中redisTemplate,opsForValue().set(key,categoryList,expire);}return categorylList ; }else {return (List<ProductCategory>) obj;}
    }
    
http://www.15wanjia.com/news/179995.html

相关文章:

  • 重庆做石材的网站如何在抖音上投放广告
  • 黄冈网站推广优化技巧erp网站开发
  • 建设网站所采用的技术做网页的心得体会
  • 农业企业网站模板免费下载郑州小程序
  • 网站名是什么wordpress行业模版
  • 做自己视频教程的网站网站产品展示代码
  • 网页平面设计招聘手机优化助手怎么样
  • 网页设计短板图片星巴克seo网络推广
  • 万州那家做网站网站空间上传软件
  • 如何看一个网站的备案在哪里做的做网站域名的好处是什么
  • 网站开发恶意索赔东莞市工商注册登记官网
  • 在线学习网站模板wordpress赞助功能
  • 松江区网站开发最牛视频网站建设
  • 代做毕业设计的网站wordpress子页面打不开
  • 建站系统源码下载WordPress 虎嗅主题免费
  • 小说网站怎么做不违法郑州第一附属医院不孕不育科
  • QQ群采集到wordpressseo最好的网站源码
  • 辽宁学网站建设专业学校seo网站查询
  • 做服装行业网站怎么每天更新内容wordpress媒体库管理
  • 保定建设招聘信息网站wordpress充值中心
  • 电子商务网站建设的目的和作用爱站工具包的主要功能
  • 通付盾 建设公司网站杭州软件开发
  • 林州市网站建设宝塔ssl wordpress
  • 山东青?u68元建网站idc网站备案
  • 我想创个网站企业微信一年的费用要多少
  • 学生网站建设的心得做平面设计常用的网站
  • 湘潭商城网站建设定制seo企业推广案例
  • 儿童可以做的游戏视频网站销售型网站设计
  • 微信内部劵网站怎么做建设第三方公众号平台网站教程
  • 外贸网站建设推广公司价格大学生网站建设与网页设计报告