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

自助建站和速成网站学习网页设计中遇到的心得体会

自助建站和速成网站,学习网页设计中遇到的心得体会,小程序多用户商城源码,页脚修改设计 wordpress主题缓存雪崩与缓存穿透#xff1a;高并发系统的隐形杀手 在高并发系统中#xff0c;缓存是提升性能的重要手段。然而#xff0c;缓存使用不当也会带来一系列问题#xff0c;其中最常见的就是缓存雪崩和缓存穿透。这两个问题如果不加以解决#xff0c;可能会导致系统崩溃高并发系统的隐形杀手 在高并发系统中缓存是提升性能的重要手段。然而缓存使用不当也会带来一系列问题其中最常见的就是缓存雪崩和缓存穿透。这两个问题如果不加以解决可能会导致系统崩溃甚至引发严重的生产事故。本文将深入探讨缓存雪崩和缓存穿透的成因并提供解决方案最后用Java代码实现。 一、缓存雪崩 1.1 什么是缓存雪崩 缓存雪崩是指大量缓存数据在同一时间失效导致所有请求都直接打到数据库上数据库瞬间承受巨大压力甚至崩溃。 1.2 缓存雪崩的成因 缓存集中过期缓存数据设置了相同的过期时间导致大量缓存同时失效。缓存服务器宕机缓存服务器出现故障无法提供服务。 1.3 解决方案 设置不同的过期时间为缓存数据设置随机的过期时间避免同时失效。使用多级缓存在本地缓存和分布式缓存之间增加一层缓存减少直接访问数据库的压力。缓存预热在系统启动时提前加载热点数据到缓存中。限流降级使用限流工具如Sentinel对数据库进行保护防止数据库被压垮。 1.4 Java实现 import java.util.Random; import java.util.concurrent.TimeUnit;public class CacheAvalancheSolution {private static final int BASE_EXPIRE_TIME 3600; // 基础过期时间private static final int RANDOM_RANGE 600; // 随机范围public static void main(String[] args) {// 模拟缓存数据String cacheKey hot_data;String cacheValue getDataFromCache(cacheKey);if (cacheValue null) {// 缓存失效重新加载cacheValue getDataFromDB();setCacheWithRandomExpire(cacheKey, cacheValue);}System.out.println(Cache Value: cacheValue);}private static String getDataFromCache(String key) {// 模拟从缓存中获取数据return null; // 假设缓存失效}private static String getDataFromDB() {// 模拟从数据库中获取数据return Data from DB;}private static void setCacheWithRandomExpire(String key, String value) {// 设置缓存并添加随机过期时间int expireTime BASE_EXPIRE_TIME new Random().nextInt(RANDOM_RANGE);System.out.println(Set cache with expire time: expireTime seconds);// 实际项目中可以使用Redis等缓存工具} }二、缓存穿透 2.1 什么是缓存穿透 缓存穿透是指查询一个不存在的数据由于缓存中没有该数据请求直接打到数据库上。如果大量请求查询不存在的数据数据库可能会被压垮。 2.2 缓存穿透的成因 恶意攻击攻击者故意查询不存在的数据导致数据库压力过大。业务逻辑问题业务代码中没有对查询参数进行校验导致大量无效查询。 2.3 解决方案 布隆过滤器使用布隆过滤器过滤掉不存在的数据避免无效查询。缓存空值对于查询结果为空的请求缓存一个空值并设置较短的过期时间。参数校验在业务逻辑层面对查询参数进行校验过滤掉无效请求。 2.4 Java实现 import com.google.common.hash.BloomFilter; import com.google.common.hash.Funnels;public class CachePenetrationSolution {private static BloomFilterString bloomFilter BloomFilter.create(Funnels.stringFunnel(), 1000000, 0.01); // 布隆过滤器public static void main(String[] args) {// 模拟查询String queryKey non_existent_key;if (!bloomFilter.mightContain(queryKey)) {// 布隆过滤器判断不存在System.out.println(Data not exist in bloom filter);return;}String cacheValue getDataFromCache(queryKey);if (cacheValue null) {// 缓存失效重新加载cacheValue getDataFromDB(queryKey);if (cacheValue null) {// 数据库中没有该数据缓存空值setCacheWithShortExpire(queryKey, NULL);} else {setCacheWithShortExpire(queryKey, cacheValue);}}System.out.println(Cache Value: cacheValue);}private static String getDataFromCache(String key) {// 模拟从缓存中获取数据return null; // 假设缓存失效}private static String getDataFromDB(String key) {// 模拟从数据库中获取数据return null; // 假设数据库中不存在该数据}private static void setCacheWithShortExpire(String key, String value) {// 设置缓存并添加较短的过期时间System.out.println(Set cache with short expire time for key: key);// 实际项目中可以使用Redis等缓存工具} }三、总结 缓存雪崩和缓存穿透是高并发系统中常见的缓存问题如果不加以解决可能会导致系统崩溃。通过设置不同的过期时间、使用布隆过滤器、缓存空值等方法可以有效避免这些问题。在实际项目中我们需要根据业务场景选择合适的解决方案确保系统的稳定性和高性能。 关注我获取更多技术干货如果你有任何问题或建议欢迎在评论区留言。
http://www.dnsts.com.cn/news/74819.html

相关文章:

  • 画册宣传册设计公司南宁网站建设_seo优化服务公司
  • 大型移动网站建设图标的网站
  • 庆元县建设局网站11月达感染高峰
  • 开封网站建设中心宣武富阳网站建设
  • 电商网站开发开题报告网站和网络有什么区别
  • 宿迁做网站需要多少钱如何做网络推广优化
  • 建设全球购多用户商城网站中国国家人事人才培训网
  • 邗江建设局网站谷歌浏览器网页版
  • 企业建站用什么主机必应网站提交入口
  • 不花钱的做网站wordpress数据卡
  • 部门网站建设存在的问题网站首页做了一下调整会被k吗
  • 合肥做网站的网络公司古代中国建筑网站
  • 旅游网站ppt应做的内容下载应用
  • 5000元网站seo推广百度网站上做推广受骗
  • 优秀网站设计 pdf线上推广话术
  • 网站建设收费标准报价站长工具ip地址查询域名
  • 我的文档上传到网站 做链接手机网站特效
  • 城北区工程建设信息网站买个网页多少钱
  • 交易类网站做支付宝功能做推广网站哪家好
  • app需要网站有哪些二级域名查询网站
  • 建网站找兴田德润咸阳网站建设
  • 滕州网站建设招聘wordpress静态网站博客
  • 网站备案多久可以注销网站做缓存
  • 沧州网站建设优化公司孵化器网站建设方案
  • 网站建设 软件开发的公司哪家好建设部的网站首页
  • 网站内容页显示不出来的服务平台app
  • 营销网站占用多少m空间泰州seo网站推广
  • 大城县有做网站的吗如何做网页游戏
  • 网站的建设与规划方案营销方案包括哪些内容
  • 网站商城注意事项国外最新设计产品