zoukankan      html  css  js  c++  java
  • C#通过Redis实现分布式锁

    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

  • 相关阅读:
    Mybatis分页插件
    Mybatis代码自动生成
    Spring-Mybatis依赖
    Spring-test单元测试
    Spring-json依赖
    Spring-MVC依赖
    Log4j日志依赖
    Spring数据库连接池依赖
    Spring-JDBC依赖
    Spring依赖
  • 原文地址:https://www.cnblogs.com/xiaopotian/p/6891019.html
Copyright © 2011-2022 走看看