多线程锁问题

多线程锁问题

cache = (List<CM_ShipFeeDetail>)_memoryCache.Get(shipfeeDetailCacheKey);

if (cache == null || cache.Count == 0)
{
lock (LockTransportRuleList)
{
cache = (List<CM_TransportShipFeeDetail>)_memoryCache.Get(shipfeeDetailCacheKey); //锁后需再次获取缓存,是多线程的,每次都需重新获取缓存,避免多次访问数据库

if (cache == null)
{
Result = _repository.GetDetails(request.CustomerID, true);

if (Result != null && Result.Count > 0)
{
_memoryCache.Set(DetailCacheKey, Result, DateTime.Now.AddMinutes(60));
}
}
}

}

posted @ 2023-10-31 17:48  大树2  阅读(62)  评论(0)    收藏  举报