关于网站大并发情况下的数据的初始化如何处理。

本文讨论了网站运行过程中缓存数据初始化的问题,在高并发场景下如何避免数据重复插入。通过使用锁机制来实现线程间同步,并探讨更高效稳定的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简短节说:网站在运行过程中,一些缓存数据需要初始化工作,那么在大并发情况下会造成数据重复。
举例 if(arrArea == null)

      List arrArea = new List(); 
      arrArea.add(1);
      arrArea.add(2); 
      Cache.Insert(arrArea);
}
假如该段代码不是放在Application_Start方法体中,而是在网站首页上。就会造成arrArea被重复插入相同的数据。
因为瞬间并发多,if(arrArea == null)逻辑判断会来不及。
那么就要进行线程间的同步。
string tongbu = "abc";
lock(tongbu)
 { 
      if(arrArea == null)
       { 
            List arrArea = new List(); 
            arrArea.add(1); 
            arrArea.add(2); 
            Cache.Insert(arrArea); 
      }
}
也可以,
Type tempType = Typeof(_Default);
Monitor.Enter(tempType );
if(arrArea == null)

      List arrArea = new List(); 
      arrArea.add(1); 
      arrArea.add(2); 
      Cache.Insert(arrArea);
}
Monitor.Exit(tempType);
还有很多种方式。我想知道的是,有没有更加高明的方法,因为貌似这两种方法都不太好,我在一个每天流量20万的网站上测试发现不是太稳定。
 -----------------------
不好意思,之前排版有点问题。我发此文目的是想了解大家都在使用什么高明的方法。

转载于:https://www.cnblogs.com/juelv/archive/2009/09/02/1558633.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值