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

扬州网站建设开发长沙房地产公司有哪些

扬州网站建设开发,长沙房地产公司有哪些,网站建设非功能需求,网站建设从零开始 教程文章目录 #x1f354;什么是缓存穿透#x1f384;解决办法⭐缓存空值处理#x1f388;优点#x1f388;缺点#x1f38d;代码实现 ⭐布隆过滤器#x1f38d;代码实现 #x1f354;什么是缓存穿透 缓存穿透是指在使用缓存机制时#xff0c;大量的请求无法从缓存中获取… 文章目录 什么是缓存穿透解决办法⭐缓存空值处理优点缺点代码实现 ⭐布隆过滤器代码实现 什么是缓存穿透 缓存穿透是指在使用缓存机制时大量的请求无法从缓存中获取到结果导致请求都要直接访问后端存储系统从而增加了系统的负载和响应时间。 通常的缓存机制是将请求的结果缓存在内存或其他高速存储介质中当相同的请求再次到达时可以直接从缓存中获取结果避免了从后端存储系统中读取数据的开销。 然而在缓存穿透的情况下由于大量请求所对应的数据在缓存中不存在每个请求都需要直接访问后端存储系统。这可能是因为恶意请求、频繁的随机查询或者查询不存在的数据等原因。 缓存穿透可能导致以下问题 性能下降由于大量的请求都要直接访问后端存储系统系统的响应时间会显著增加导致性能下降。增加负载后端存储系统承受了大量无效请求的压力增加了系统的负载可能导致后端存储系统的性能问题。安全风险缓存穿透可能为恶意请求提供了一种绕过缓存机制直接访问后端存储系统的途径可能导致安全漏洞或数据泄露。 解决办法 缓存空值处理对于不存在的数据也将其缓存起来但缓存的值为空这样下次再有相同的请求到达时可以直接返回空结果避免对后端存储系统的重复查询。布隆过滤器Bloom Filter使用布隆过滤器可以快速判断请求所对应的数据是否存在于缓存中从而减少对后端存储系统的无效查询。 ⭐缓存空值处理 优点 实现简单维护方便 缺点 额外的内存消耗可能造成短期数据的不一致 代码实现 Service public class ShopServiceImpl extends ServiceImplShopMapper, Shop implements IShopService {Resourceprivate StringRedisTemplate stringRedisTemplate;Resourceprivate CacheClient cacheClient;Overridepublic Result queryById(Long id) {String keyCACHE_SHOP_KEY:id;//从redis中查询商铺缓存String shopJsonstringRedisTemplate.opsForValue().get(key);//判断是否存在if(StrUtil.isNotBlank(shopJson)){ //isNotBlank只有传入的是 字符串 的情况下才返回true否则返回false//存在直接返回Shop shop JSONUtil.toBean(shopJson, Shop.class);return Result.ok(shop);}//判断命中的是否是空值//因为上面isNotBlank判断了有值的情况了下面需要判断的就2种情况 null 和 空字符串if(shopJson!null){//不为null那么为空字符串return Result.fail(店铺不存在);}//不存在根据id查询数据库Shop shop this.getById(id);//不存在返回错误信息if (shop null) {//将空值写入到redisstringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(shop),CACHE_SHOP_TTL, TimeUnit.MINUTES);return Result.fail(店铺不存在);}//存在写入到redis里面stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(shop),CACHE_SHOP_TTL, TimeUnit.MINUTES);//返回return Result.ok(shop); }⭐布隆过滤器 布隆过滤器是一种空间效率高、适合大规模数据的概率型数据结构用于判断一个元素是否可能存在于一个集合中。布隆过滤器由一个位数组和多个哈希函数组成。其核心思想是通过多个哈希函数对输入元素进行映射将元素映射到位数组的多个位置上从而实现元素的快速查找。 假设布隆过滤器使用一个长度为 m 的位数组和 k 个独立的哈希函数初始时所有位都置为 0。当要插入一个元素时将该元素经过 k 个哈希函数得到的 k 个哈希值作为索引在位数组中将这 k 个位置的值置为 1。当要查询一个元素时同样将该元素经过 k 个哈希函数得到的 k 个哈希值作为索引并检查对应的位数组位置是否都为 1若有任何一个位置为 0则可以确定该元素不存在于集合中若都为 1则该元素可能存在于集合中。 布隆过滤器的优势在于具有较高的空间效率和查询效率适合大规模数据的情况。由于使用了多个哈希函数可以有效减少冲突的概率降低误判率。然而布隆过滤器也存在一定的缺陷即可能出现误判即判断某个元素存在于集合中但实际上并不存在这是由于不同元素经过哈希函数映射后的索引可能存在冲突。因此在使用布隆过滤器时需要权衡误判率和空间利用率。 总的来说布隆过滤器通过位数组和多个哈希函数实现了高效的元素判断是一种适合大规模数据场景下的概率型数据结构 代码实现 实现引入依赖 dependencygroupIdcom.google.guava/groupIdartifactIdguava/artifactIdversion29.0-jre/version/dependency配置启动类 编写核心代码 Service public class ShopServiceImpl extends ServiceImplShopMapper, Shop implements IShopService {Resourceprivate StringRedisTemplate stringRedisTemplate;Autowiredprivate BloomFilterLong bloomFilter;Overridepublic Result queryById(Long id) {String key CACHE_SHOP_KEY : id;// 使用布隆过滤器判断缓存键是否存在if (!bloomFilter.mightContain(id)) {// 缓存键不存在直接返回错误信息return Result.fail(店铺不存在);}// 从redis中查询商铺缓存String shopJson stringRedisTemplate.opsForValue().get(key);// 判断是否存在if (StrUtil.isNotBlank(shopJson)) {// 存在直接返回Shop shop JSONUtil.toBean(shopJson, Shop.class);return Result.ok(shop);}// 不存在根据id查询数据库Shop shop this.getById(id);// 不存在返回错误信息if (shop null) {// 将空值写入到redisstringRedisTemplate.opsForValue().set(key, , CACHE_SHOP_TTL, TimeUnit.MINUTES);// 将缓存键加入布隆过滤器bloomFilter.put(id);return Result.fail(店铺不存在);}// 存在写入到redis里面stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(shop), CACHE_SHOP_TTL, TimeUnit.MINUTES);// 将缓存键加入布隆过滤器bloomFilter.put(id);// 返回return Result.ok(shop);}更加详细的布隆过滤器讲解请参考我的Redis专栏Redis专栏里面讲解布隆过滤器的文章 在技术的道路上我们不断探索、不断前行不断面对挑战、不断突破自我。科技的发展改变着世界而我们作为技术人员也在这个过程中书写着自己的篇章。让我们携手并进共同努力开创美好的未来愿我们在科技的征途上不断奋进创造出更加美好、更加智能的明天
http://www.pierceye.com/news/579105/

相关文章:

  • 云南省科技网站网站建设的推广渠道
  • 网页网站设计公司排行榜南京专业app开发定制
  • 网站开发人员就业前景公司的网站建设注意点
  • 做英文网站2014深圳网站设计g
  • 温州文成县高端网站设计做网站有生意吗
  • 网站开发说明书模板产品设计考研
  • seo网站排名优化软件京东 wordpress
  • 有些网站为什么可以做资讯微信小程序vr全景
  • 做网站的开发工具长春百度关键词优化
  • 网站建设所需人力网站制作的必备技巧有哪些
  • 上饶网站建设推广四川城乡建设网网站
  • 网站logo怎么改服装手机商城网站建设
  • aspnet网站开发实例视频天津网站建设普斯泰
  • 玉溪网站建设设计心理医院网站优化服务商
  • 支付宝网站接口申请建湖做网站哪家最好
  • 网站的超级链接怎么做无法运行电脑wordpress
  • 网站建设企业网银e路通西宁做网站_君博相约
  • 陕西网站建设公司哪有大连网站建设
  • 东莞做网站 汇卓百度网盘官网登录入口
  • 网站建设哪谷歌浏览器安卓版下载
  • 中国建设银行上海市分行网站天津工程建设信息网站
  • 怎么做好网站开发、设计中国站长网站
  • 沈阳网站建设tlmh室内设计装修案例
  • 网站 linux 服务器配置长沙企业网站建设价格
  • 低价网站制作企业智慧团建官网登录口手机版
  • 临沂网站制作专业如何 做网站
  • 旅游景区网站开发的政策可行性天翼云电脑免费领取
  • 企业网站建设报价做网站要实名认证吗
  • 设计网站得多少钱ui设计师个人简历
  • 彩票网站建设基本流程wordpress上篇下篇代码