码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 开源:Taurus.DistributedLock 分布式锁框架,支持 .Net 和 .Net Core 双系列版本


    前言:

    在经过漫长的技术沉淀,终于又为 .Net 及 .Net Core 的微服务系列框架贡献当中的一个重要组件。

    Taurus.DistributedLock is a distributed lock for .net or .net core.【支持:Redis、MemCache、Database、Local、File 五类锁】

    1、开源地址:

    https://github.com/cyq1162/Taurus.DistributedLock

    # Taurus.DistributedLock 分布式锁,使用 .Net Core 示例:

    2、以 Nuget 中引入运行包:Taurus.DistributedLock

    3、进行编码:

    1、引入名称空间:

    using Taurus.Plugin.DistributedLock;

    2、配置相关项(示例用代码进行配置,也可以在配置文件中配置):

    复制代码
    1、Database 锁配置:
       DLockConfig.Conn = "server=.;database=mslog;uid=sa;pwd=123456";//由数据库链接决定启用什么链接
       DLockConfig.TableName = "taurus_lock";
    2、Redis 锁配置:
      DLockConfig.RedisServers = "127.0.0.1:6379";
    3、MemCache 锁配置:
      DLockConfig.MemCacheServers = "192.168.100.111:11211";
    复制代码

    3、根据需要获得对应锁类型:

    var dsLock = DLock.File;// Get File Lock
    var dsLock = DLock.Local;// Get Local Lock
    var dsLock = DLock.Database;// Get DataBase Lock
    var dsLock = DLock.Redis;// Get Redis Lock
    var dsLock = DLock.MemCache;// Get MemCache Lock  

    4、进行锁、并释放锁:

    复制代码
     string key = "myLock";
     bool isOK = false;
     try
     {
         isOK = dsLock.Lock(key, 30000);
         if (isOK)
         {
             Console.Write(" -  OK - " + );
         }
     }
     finally
     {
         if (isOK)
         {
             dsLock.UnLock(key);
         }
     }  
    复制代码

    更详细使用见开源地址:/demo 运行示例,运行界面:

     

    总结:

    分布式锁,最早在是去年,因为前面两个开源框架:Taurus.DTC 分布式事务框架 、Taurus.DTS 分布式任务框架 中需要用到分布式锁。

    考虑到 CYQ.Data ORM框架内部已经实现了分布式缓存(Redis、Memcached),而分布式锁依赖于分布式缓存, 所以花了些时间,集成在 CYQ.Data 框架内部实现了,默认实现时并没有数据库类型。

    后来想让Taurus.DistributedLock 分布式锁框架独立,也让 CYQ.Data 单纯一些,分布式锁从 CYQ.Data 版本移除了 。

    同时独立的分布式锁框架,增加了数据库类型的锁,数据库类型锁目前支持(Mssql、Mysql、Oracle、Sybase、Postgres、DB2、FireBird、Sqlite、DaMeng(达梦)、KingBaseES(人大金仓))。

     

  • 相关阅读:
    在Linux/Ubuntu/Debian中使用 `tee` 命令将输出显示在终端并写入文件中
    Java Class反射
    docker给已存在的容器添加或修改端口映射
    leetcode/两个链表的第一个重合节点
    【函数式编程】Lambda、Stream、Optional、方法引用、并行流
    全新云开发工具箱:融合多项功能的微信小程序源码解决方案
    2流高手速成记(之六):从SpringBoot到SpringCloudAlibaba
    C语言的文件操作(炒详解)
    k8s 部署filebeat sidecar模式之nginx测试
    【算法】判断IP地址是不是合法的,包含IPv4和IPv6
  • 原文地址:https://www.cnblogs.com/cyq1162/p/18029306
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号