Controllers/RedisLockController.cs

(完整代码) 1KB

using Microsoft.AspNetCore.Mvc;
using RedisLock_Demo.Models;
using System;

namespace RedisLock_Demo.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class RedisLockController : ControllerBase
    {
        readonly IFreeSql freeSql;
        readonly RedisLock redisLock = new RedisLock();
        public RedisLockController(IFreeSql _freeSql)
        {
            freeSql = _freeSql;
        }

        [HttpPost]
        public int Post()
        {
            //请求id
            string requestId = Guid.NewGuid().ToString();
            try
            {
                //获取锁
                redisLock.GetLock(requestId);
                //业务操作
                var redisLockd = freeSql.Select<RedisLockdTest>().First();
                redisLockd.Num++;
                freeSql.Update<RedisLockdTest>().Set(r => r.Num, redisLockd.Num).Where(r => 1 == 1).ExecuteAffrows();
                return redisLockd.Num;
            }
            finally
            {
                redisLock.ReleaseLock(requestId);
            }
        }
    }
}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。