本文整理汇总了C#中MemcachedClient.Add方法的典型用法代码示例。如果您正苦于以下问题:C# MemcachedClient.Add方法的具体用法?C# MemcachedClient.Add怎么用?C# MemcachedClient.Add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MemcachedClient
的用法示例。
在下文中一共展示了MemcachedClient.Add方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MemcachedLocker
public MemcachedLocker(MemcachedClient client, string key, TimeSpan timeOut)
{
this.client = client;
this.key = key;
this.timeOut = timeOut;
int sleep = 10;
DateTime now = DateTime.Now;
while (DateTime.Now - now < timeOut)
{
if (client.Add<DateTime?>(key, DateTime.Now.Add(timeOut)))
return;
//需要排除锁未释放的可能,如果检测到超过超时时间2倍的话,尝试获得锁
ulong version;
var time = client.Get<DateTime?>(key, out version);
if (time == null || (time.HasValue && time.Value.ToLocalTime().Add(timeOut + timeOut) < DateTime.Now))
{
LocalLoggingService.Warning("{0} {1} {2} {3}", DistributedServerConfiguration.ModuleName, "MemcachedLocker", "MemcachedLocker",
string.Format("发现一个超时的分布式锁,超时时间:{0} Key : {1}",
time, key));
if (client.Add<DateTime?>(key, DateTime.Now.Add(timeOut), version))
return;
}
if (sleep < 1000)
sleep = sleep * 110 / 100;
else
sleep = 1000;
Thread.Sleep(sleep);
}
throw new TimeoutException(string.Format("获得锁的时间超过了设定的最大时间 {0}", timeOut.ToString()));
}