多线程锁问题

多线程锁问题

                    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  阅读(20)  评论(0)    收藏  举报