public LocalCacheLock(IBaseCacheStrategy strategy, string resourceName, string key, int?retryCount = null, TimeSpan?retryDelay = null) : base(strategy, resourceName, key, retryCount ?? 0, retryDelay ?? TimeSpan.FromMilliseconds(10)) { _localStrategy = strategy; LockNow();//立即等待并抢夺锁 }
/// <summary> /// /// </summary> /// <param name="strategy"></param> /// <param name="resourceName"></param> /// <param name="key"></param> /// <param name="retryCount">如果传入null,默认为50</param> /// <param name="retryDelay">如果传入null,默认为10毫秒</param> protected BaseCacheLock(IBaseCacheStrategy strategy, string resourceName, string key, int?retryCount, TimeSpan?retryDelay) { _cacheStrategy = strategy; _resourceName = resourceName + key;/*加上Key可以针对某个AppId加锁*/ _retryCount = retryCount == null || retryCount == 0 ? DefaultRetryCount : retryCount.Value; _retryDelay = retryDelay == null || retryDelay.Value.TotalMilliseconds == 0 ? DefaultRetryDelay : retryDelay.Value; }
protected RedisCacheLock(IBaseCacheStrategy strategy, string resourceName, string key, int?retryCount, TimeSpan?retryDelay) : base(strategy, resourceName, key, retryCount, retryDelay) { _client = (strategy as RedisObjectCacheStrategy) !.Client; //LockNow();//立即等待并抢夺锁 }
protected BaseCacheLock(IBaseCacheStrategy stragegy, string resourceName, string key, int retryCount, TimeSpan retryDelay) { _cacheStragegy = stragegy; _resourceName = resourceName + key;/*加上Key可以针对某个AppId加锁*/ _retryCount = retryCount; _retryDelay = retryDelay; }
protected BaseCacheLock(IBaseCacheStrategy strategy, string resourceName, string key, int retryCount, TimeSpan retryDelay) { _cacheStrategy = strategy; _resourceName = resourceName + key;/*加上Key可以针对某个AppId加锁*/ _retryCount = retryCount; _retryDelay = retryDelay; }
public CatalogDataService( IRequestProvider request, IBaseCacheStrategy cache) { _request = request; _cache = cache; }
public CacheLockWrapper(IBaseCacheStrategy containerCacheStragegy, string resourceName, string key, int retryCount, TimeSpan retryDelay) { _containerCacheStragegy = containerCacheStragegy; _resourceName = resourceName + key;/*加上Key可以针对某个AppId加锁*/ if (retryCount != 0 && retryDelay.Ticks != 0) { LockSuccessful = _containerCacheStragegy.Lock(_resourceName, retryCount, retryDelay); } else { LockSuccessful = _containerCacheStragegy.Lock(_resourceName); } }
/// <summary> /// 创建 LocalCacheLock 实例,并立即尝试获得锁 /// </summary> /// <param name="strategy">LocalObjectCacheStrategy</param> /// <param name="resourceName"></param> /// <param name="key"></param> /// <param name="retryCount"></param> /// <param name="retryDelay"></param> /// <returns></returns> public static ICacheLock CreateAndLock(IBaseCacheStrategy strategy, string resourceName, string key, int?retryCount = null, TimeSpan?retryDelay = null) { return(new LocalCacheLock(strategy as LocalObjectCacheStrategy, resourceName, key, retryCount, retryDelay).Lock()); }
/// <summary> /// 【异步方法】创建 LocalCacheLock 实例,并立即尝试获得锁 /// </summary> /// <param name="strategy">LocalObjectCacheStrategy</param> /// <param name="resourceName"></param> /// <param name="key"></param> /// <param name="retryCount"></param> /// <param name="retryDelay"></param> /// <returns></returns> public static async Task <ICacheLock> CreateAndLockAsync(IBaseCacheStrategy strategy, string resourceName, string key, int?retryCount = null, TimeSpan?retryDelay = null) { return(await new LocalCacheLock(strategy as LocalObjectCacheStrategy, resourceName, key, retryCount, retryDelay).LockAsync().ConfigureAwait(false)); }
/// <summary> /// 【异步方法】创建 RedisCacheLock 实例,并立即尝试获得锁 /// </summary> /// <param name="strategy">BaseRedisObjectCacheStrategy</param> /// <param name="resourceName"></param> /// <param name="key"></param> /// <param name="retryCount"></param> /// <param name="retryDelay"></param> /// <returns></returns> public static async Task <ICacheLock> CreateAndLockAsync(IBaseCacheStrategy strategy, string resourceName, string key, int?retryCount = null, TimeSpan?retryDelay = null) { return(await new RedisCacheLock(strategy as BaseRedisObjectCacheStrategy, resourceName, key, retryCount, retryDelay).LockAsync()); }
public static CacheLockWrapper InstanceCacheLockWrapper(this IBaseCacheStrategy stragegy, string resourceName, string key) { return(InstanceCacheLockWrapper(stragegy, resourceName, key, 0, new TimeSpan())); }
public static CacheLockWrapper InstanceCacheLockWrapper(this IBaseCacheStrategy stragegy, string resourceName, string key, int retryCount, TimeSpan retryDelay) { return(new CacheLockWrapper(stragegy, resourceName, key, retryCount, retryDelay)); }
public CacheLockWrapper(IBaseCacheStrategy containerCacheStragegy, string resourceName, string key) : this(containerCacheStragegy, resourceName, key, 0, new TimeSpan()) { }
public LocalCacheLock(IBaseCacheStrategy strategy, string resourceName, string key, int retryCount, TimeSpan retryDelay) : base(strategy, resourceName, key, retryCount, retryDelay) { _localStrategy = strategy; }
public LocalCacheLock(IBaseCacheStrategy strategy, string resourceName, string key, int retryCount, TimeSpan retryDelay) :base(strategy,resourceName,key,retryCount,retryDelay) { _localStrategy = strategy; }