C#通过Redis实现分布式锁
2017-05-22 19:33
211 查看
Redis有三个最基本属性来保证分布式锁的有效实现:
- 安全性: 互斥,在任何时候,只有一个客户端能持有锁。
- 活跃性A:没有死锁,即使客户端在持有锁的时候崩溃,最后也会有其他客户端能获得锁,超时机制。
- 活跃性B:故障容忍,只有大多数Redis节点时存活的,客户端仍可以获得锁和释放锁。
使用StackExchange.Redis 实现起来简单得很
static void Lock() { Console.WriteLine("Start.........."); var db = _redis.GetDatabase(); RedisValue token = Environment.MachineName; //实际项目秒杀此处可换成商品ID if (db.LockTake("test", token, TimeSpan.FromSeconds(10))) { try { Console.WriteLine("Working.........."); Thread.Sleep(5000); } finally { db.LockRelease("test", token); } } Console.WriteLine("Over.........."); }
最后附上GitHub地址:https://github.com/xiaopotian1990/RedisDemo
相关文章推荐
- C#通过Redis实现分布式锁
- 通过Redis实现分布式锁
- 通过Redisson实现基于redis的分布式锁
- Scrapy通过redis实现分布式抓取
- C#通过Redis实现分布式锁
- 深入理解Spring Redis的使用 (九)、通过Redis 实现 分布式锁 的 BUG,以及和数据库加锁的性能测试
- 深入理解Spring Redis的使用 (九)、通过Redis 实现 分布式锁 的 BUG,以及和数据库加锁的性能测试
- 通过异步连接实现的端口扫描器(ACE和C#版)
- 通过C#实现集合类纵览.NET Collections及相关技术
- 通过C#实现集合类纵览.NET Collections及相关技术
- [导入]C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
- C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
- C#实现通过程序自动抓取远程Web网页信息
- 通过API实现C#对硬件的控制(三)
- C#实现通过HttpWebRequest发送POST请求实现网站自动登陆
- C#实现通过程序自动抓取远程Web网页信息
- 通过API实现C#对硬件的控制(一)
- C#实现通过程序自动抓取远程Web网页信息(转载)
- C#实现通过程序自动抓取远程Web网页信息的代码
- 蛙蛙推荐:用c#实现一个简单的分布式搜索