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

用wordpress做微站平面设计工资一般薪资多少

用wordpress做微站,平面设计工资一般薪资多少,网站建设平台杭州,想建个网站找谁缓存穿透问题(缓存空) 缓存穿透的解决方案 缓存穿透(数据穿透缓存直击数据库): 缓存穿透是指客户端请求访问缓存中和数据库中都不存在的数据,此时缓存永远不会生效并且用户的请求都会打到数据库 数据库能够承载的并发不如Redis这么高#xff0c;如果大量的请求同时访问这种…缓存穿透问题(缓存空) 缓存穿透的解决方案 缓存穿透(数据穿透缓存直击数据库): 缓存穿透是指客户端请求访问缓存中和数据库中都不存在的数据,此时缓存永远不会生效并且用户的请求都会打到数据库 数据库能够承载的并发不如Redis这么高如果大量的请求同时访问这种不存在的数据这些请求就都会访问到数据库就会造成数据库瘫痪 缓存穿透的解决方案有哪些 缓存null值 布隆过滤 增强id的复杂度,这样用户就不知道缓存中和数据库中不存在的数据有哪些 做好数据的基础格式校验 加强用户权限校验 做好热点参数的限流 缓存空对象 即使访问的数据在数据库中不存在也要把这个数据缓存到redis中去,这样用户下次再访问这个不存在的数据时就能在redis中找到这个数据所以不会进入到缓存 优点: 实现简单且维护方便缺点: 造成额外的内存消耗(可以设置一个TTL), 可能造成数据库和缓存短期的数据不一致(只有TTL到期时才能更新缓存) 布隆过滤(哈希思想) 布隆过滤器其实采用的是哈希思想,使用一个庞大的二进制数组通过哈希算法把数据库中的数据对应hash值转换成二级制位保存起来 只有布隆过滤器判断要查询的数据存在时才会放行(如果发生哈希碰撞,布隆认为存在的数据可能不存在),不存在则直接返回(一定不存在) 这个请求会去访问redis哪怕此时redis中的数据过期了但是数据库中一定存在这个数据在数据库中查询出来这个数据后再将其放入到redis中 优点: 内存占用较少且没有多余key 缺点: 实现复杂且存在误判可能(哈希算法可能存在哈希冲突) 解决商品查询的缓存穿透 如果查询的数据在数据库中找不到不是返回404,而是把这个数据库中不存在的数据也写入到Redis中并且将value设置为空字符串同时设置一个较短的TTL 再次发起同样的查询请求时,肯定会命中缓存,但是由于value是空字符串会,表示查询的是不存在的数据,直接返回一个错误信息,避免了再次查询数据库的操作 // 设置缓存空字符串的超时时间 public static final Long CACHE_NULL_TTL 2L;Override public Result queryById(Long id) {// 先从Redis中查询对应的店铺缓存信息这里的常量值是固定店铺的前缀查询店铺的idString shopJson stringRedisTemplate.opsForValue().get(CACHE_SHOP_KEY id);// 如果在Redis中查询到了店铺信息,并且店铺的信息不是空字符串则转为Shop类型直接返回,和null以及/t/n(换行)都会判定为空即返回falseif (StrUtil.isNotBlank(shopJson)) {Shop shop JSONUtil.toBean(shopJson, Shop.class);return Result.ok(shop);}// 如果缓存的店铺信息是空字符串(shopjson )即我们缓存的空数据,返回一个错误信息if (shopjson ! null) { return Result.fail(店铺不存在);}// 如果没有命中并且店铺信息不是空字符串即shopjson等于null则去数据库中根据查Id查询店铺信息Shop shop getById(id);// 在数据库中查询不到店铺,把这个不存在的数据也写入到Redis中并且将value设置为空字符串同时设置一个较短的TTL(如2分钟)if (shop null) {stringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY id, , CACHE_NULL_TTL, TimeUnit.MINUTES);return Result.fail(店铺不存在);}// 查到了则将店铺对象转为json字符串存入redis同时设置TTLString jsonStr JSONUtil.toJsonStr(shop);stringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY id, jsonStr, CACHE_SHOP_TTL, TimeUnit.MINUTES);// 最终把查询到的商户信息返回给前端return Result.ok(shop); }单独实现解决缓存穿透的方法queryWithPassThrough,在该方法中如果查到店铺信息返回shop查不到则返回null,最后在queryById中做统一判断返回结果类 Override public Result queryById(Long id) {// 测试缓存穿透Shop shop queryWithPassThrough(id);// 如果shop等于null,表示数据库中对应店铺不存在或者缓存的店铺信息是空字符串if (shop null) {return Result.fail(店铺不存在);}// shop不等于null,把查询到的商户信息返回给前端return Result.ok(shop); }Override public Result queryWithPassThrough(Long id) {// 先从Redis中查询对应的店铺缓存信息这里的常量值是固定的店铺前缀查询店铺的IdString shopJson stringRedisTemplate.opsForValue().get(CACHE_SHOP_KEY id);// 如果在Redis中查询到了店铺信息,并且店铺的信息不是空字符串则转为Shop类型直接返回,和null以及/t/n(换行)都会判定为空即返回falseif (StrUtil.isNotBlank(shopJson)) {Shop shop JSONUtil.toBean(shopJson, Shop.class);return shop;}// 如果缓存的店铺信息是空字符串(shopjson )即我们缓存的空数据,返回nullif (shopjson ! null) { return null;}// 如果没有命中并且店铺信息不是空字符串即shopjson等于null则去数据库中根据查Id查询店铺信息Shop shop getById(id);// 在数据库中查询不到店铺,把这个不存在的数据也写入到Redis中并且将value设置为空字符串同时设置一个较短的TTL(如2分钟)if (shop null) {stringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY id, , CACHE_NULL_TTL, TimeUnit.MINUTES);return null;}// 查到了则将店铺对象转为json字符串存入redis同时设置TTLString jsonStr JSONUtil.toJsonStr(shop);stringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY id, jsonStr, CACHE_SHOP_TTL, TimeUnit.MINUTES);// 最终把查询到的商户信息返回给前端return shop; }
http://www.hkea.cn/news/14578703/

相关文章:

  • 制作网站可用性监控wordpress版本文件
  • 四川网站设计成功柚米科技平面设计网页设计专员
  • 找人做网站注意什么问题百度不更新网站
  • 建设网站的行业现状分析购物网站功能报价
  • 扎实做好机构编制网站建设wap页面是什么意思
  • 上海黄页固定电话查询南京百度快照优化排名
  • 网站建设开发合同网络推广公司如何做
  • 好网站推理代理什么产品最赚钱
  • 做网站是否需要自购服务器南昌seo技术外包
  • 有声阅读网站如何建设合肥有做网站的吗
  • cms建站做磨毛布内销哪个网站比较好
  • 海外网站服务器租用在跨境网站贸易公司做怎么样
  • 如何做一个公司网站织梦做网站简单吗
  • 能打开各种网站的浏览器广州网站建设业务
  • 网站建设发布平台2023年最新法定传染病有哪些
  • 网站备案后 换服务器百度搜索关键词数据
  • 化工产品东莞网站建设百度站长工具网站认证
  • 安徽建设局网站怎么查证件信息舆情分析网站免费
  • 佛山做外贸网站android开发软件下载
  • 做住宿网站挣钱吗wordpress插件库
  • 网站建设的毕业设计使用别人网站代码做自己的网站
  • 四川城乡建设厅网站广州市建设和水务局网站
  • 微网站建设的现状清新太和做网站
  • 如果网站已被入侵免费空间申请网站
  • 长沙专业做网站排名沈阳网站建设技术支持
  • 清控人居建设集团网站一个网站的建设需要什么时候开始
  • a032网站模版哈尔滨网站制作公司价格
  • 百度网站建设及推广实时热点新闻事件
  • 合肥网站建设专业设计备案的网站 ,能拿来做仿站吗
  • 哪里有网站制作建设邯郸手机网站建设报价