C#RedLockNet实现REDIS操作锁解决业务并发问题

在业务开发中,面对并发操作同一资源的情况,文章介绍了如何利用RedLock.net这个库来创建分布式锁。通过初始化连接、设置超时和等待时间,以及重试间隔,可以确保对共享资源的互斥访问,防止如库存操作或流水号生成等场景下的重复触发问题。
摘要由CSDN通过智能技术生成

 

业务开发过程中经常会遇到并发的情况,或者多个业务接口会操作同一张表等需求,如果不处理的话就会导致重复触发的问题,比如对同一个库位进行操作,比如条码生成流水号等等。

简单使用

包RedLock.net

使用

初始化

    var existingConnectionMultiplexer1 = ConnectionMultiplexer.Connect("127.0.0.1:6379");

            var multiplexers = new List<RedLockMultiplexer>
{
    existingConnectionMultiplexer1,
};
            RedLockFactory = RedLockFactory.Create(multiplexers);

使用

var resource = "the-thing-we-are-locking-on";
            var expiry = TimeSpan.FromSeconds(30);// 超时时间
            var wait = TimeSpan.FromSeconds(10);//等待时间
            var retry = TimeSpan.FromSeconds(1);//重试间隔
            this.Invoke(() =>
            {
                if (from == "1")
                    textBox1.Text = $"{from}获取锁开始{DateTime.Now}";
                else
                    textBox2.Text = $"{from}获取锁开始{DateTime.Now}";
            });
            // blocks until acquired or 'wait' timeout
            await using (var redLock = await RedLockFactory.CreateLockAsync(resource, expiry, wait, retry)) // there are also non async Create() methods
            {
                // make sure we got the lock
                if (redLock.IsAcquired)
                {

                    // do stuff
                }
                this.Invoke(() =>
                {
                    if (from == "1")
                        textBox1.Text = $"{from}获取锁{redLock.IsAcquired},{DateTime.Now}";
                    else
                        textBox2.Text = $"{from}获取锁{redLock.IsAcquired},{DateTime.Now}";
                });
                await Task.Delay(100);
            }

redLock.IsAcquired 为true则获取到唯一锁可进行业务操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

11eleven

你的鼓励是我创作的动力 !

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值