码迷,mamicode.com
首页 > Windows程序 > 详细

C#通过Redis实现分布式锁

时间:2017-05-22 20:04:17      阅读:1484      评论:0      收藏:0      [点我收藏+]

标签:img   stat   aop   data   分享   死锁   bsp   nal   thread   

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实现分布式锁

标签:img   stat   aop   data   分享   死锁   bsp   nal   thread   

原文地址:http://www.cnblogs.com/xiaopotian/p/6891019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!