为了账号安全,请及时绑定邮箱和手机立即绑定

如何解决cache失效用户并发请求问题

如何解决cache失效用户并发请求问题

拉风的咖菲猫 2018-07-28 06:10:21
比如:if(cache["key"]==null){  lock(this)  {    if(cache["key"]==null)    {      cache.Insert("key",func())    }  }}这边的func 是有返回结果的一个委托代码大概是这么一个逻辑,但是如果其中有一个key的委托如果执行很久的话,那不是其他地方的缓存都要等这个委托执行完,那不是我不需要访问这个缓存的也要等这个委托执行完把lock解开,不知道有没有办法可以就是各个不同名称的缓存的lock互不受影响
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

那你就需要lock不同的锁,不如我有2个角色,需要修改信息,这2个觉得都有guid这个唯一标示,

这个时候,我可以lock(string.Intern(guid.tostring()))

{

  do somethings。这样的话就单独的lock各自的对象。

}

可以先了解一下啊string.intern这个方法。


查看完整回答
反对 回复 2018-07-30
  • 1 回答
  • 0 关注
  • 620 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信