開源:Taurus.DistributedLock 分散式鎖框架,支持 .Net 和 .Net Core 雙系列版本

来源:https://www.cnblogs.com/cyq1162/p/18029306
-Advertisement-
Play Games

在經過漫長的技術沉澱,終於又為 .Net 及 .Net Core 的微服務系列框架貢獻當中的一個重要組件。Taurus.DistributedLock is a distributed lock for .net or .net core.【支持:Redis、MemCache、Database、Lo... ...


前言:

在經過漫長的技術沉澱,終於又為 .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(人大金倉))。

 

版權聲明:本文原創發表於 博客園,作者為 路過秋天 本文歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則視為侵權。
個人微信公眾號
創業QQ群:617713515
Donation(掃碼支持作者):支付寶:
Donation(掃碼支持作者):微信:
騰訊雲產品福利專區

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • TableGo是基於資料庫的自動化生成工具,低代碼編程技術的實現,全能代碼生成器,能零代碼自動生成項目框架和業務表的前後端基礎代碼、還能生成JavaBean、生成前後端代碼、生成資料庫文檔、生成API文檔,並且還能自動化部署項目,能查出資料庫數據生成各種代碼和文檔等,更重要的是可以根據每個項目的不同... ...
  • Ehcache 是一個開源的、基於標準的緩存工具,它能提升性能、減輕資料庫負載並簡化可擴展性。由於其穩健性、經得起考驗的特點以及與其他流行框架的集成,Ehcache 成為最廣泛使用的基於 Java 的緩存工具。Ehcache 從進程內緩存一直擴展到混合的進程內/進程外部署,可以處理 TB 的數據。 ...
  • 首先,咱們先聊聊,什麼是OOM? 小伙伴們,有沒有遇到過程式突然崩潰,然後拋出一個OutOfMemoryError的異常?這就是我們俗稱的OOM,也就是記憶體溢出。簡單來說,就是你的Java應用想要的記憶體超過了JVM願意給的極限,就會拋出這個錯誤。 那麼為什麼會出現OOM呢?一般都是由這些問題引起: ...
  • 今天來聊聊Java中跟數值處理相關的兩個類型Integer和BigDecimal。 說起這兩個類型,我們肯定都不陌生,但是其中有些容易踩到的坑需要註意避讓。 Integer 整型我們應該每天都會用到,但是每種語言還是有自己的特性。從敬姐剛從.NET轉過來的時候踩過的一個坑說起:話說在.NET世界中, ...
  • 前言 我們在使用ASP.NET Core WebApi時它支持使用指定的輸入和輸出格式來交換數據。輸入數據靠模型綁定的機制處理,輸出數據則需要用格式化的方式進行處理。ASP.NET Core框架已經內置了處理JSON和XML的輸入和輸出方式,預設的情況我們提交JSON格式的內容,它可以自行進行模型綁 ...
  • 前言: 之前有網友說 Mvc系列的教程對新手不友好,因此補充新手入門系列教程。 在開始使用 Taurus.Mvc 進行 Web應用開發之前,建議可以觀摩一下之前的文章:WebAPI 系列教程 因為兩者的教程,有相通的部分,唯一的差別部分,在於Web應用涉及到UI界面。 本系列的目錄大綱為: Taur ...
  • 概述:WPF通過System.Windows.Forms.Screen類,實現多屏顯示輕而易舉。通過獲取屏幕信息、確定窗體位置和設置窗體大小,可在大型展示或數據可視化應用中靈活利用多屏幕。示例代碼清晰演示瞭如何在WPF中實現這一功能。 在WPF(Windows Presentation Founda ...
  • 概述:WPF中的資源管理機制包括外部資源、窗體資源、全局資源和動態資源。通過這些資源,開發者能夠在應用程式中有效地組織、重用樣式和模板,實現靈活的設計和運行時更改。這四種資源類型分別適用於不同的應用場景,為WPF應用程式提供了強大的擴展性和可維護性。 在WPF(Windows Presentatio ...
一周排行
    -Advertisement-
    Play Games
  • 1、預覽地址:http://139.155.137.144:9012 2、qq群:801913255 一、前言 隨著網路的發展,企業對於信息系統數據的保密工作愈發重視,不同身份、角色對於數據的訪問許可權都應該大相徑庭。 列如 1、不同登錄人員對一個數據列表的可見度是不一樣的,如數據列、數據行、數據按鈕 ...
  • 前言 上一篇文章寫瞭如何使用RabbitMQ做個簡單的發送郵件項目,然後評論也是比較多,也是準備去學習一下如何確保RabbitMQ的消息可靠性,但是由於時間原因,先來說說設計模式中的簡單工廠模式吧! 在瞭解簡單工廠模式之前,我們要知道C#是一款面向對象的高級程式語言。它有3大特性,封裝、繼承、多態。 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 介紹 Nodify是一個WPF基於節點的編輯器控制項,其中包含一系列節點、連接和連接器組件,旨在簡化構建基於節點的工具的過程 ...
  • 創建一個webapi項目做測試使用。 創建新控制器,搭建一個基礎框架,包括獲取當天日期、wiki的請求地址等 創建一個Http請求幫助類以及方法,用於獲取指定URL的信息 使用http請求訪問指定url,先運行一下,看看返回的內容。內容如圖右邊所示,實際上是一個Json數據。我們主要解析 大事記 部 ...
  • 最近在不少自媒體上看到有關.NET與C#的資訊與評價,感覺大家對.NET與C#還是不太瞭解,尤其是對2016年6月發佈的跨平臺.NET Core 1.0,更是知之甚少。在考慮一番之後,還是決定寫點東西總結一下,也回顧一下.NET的發展歷史。 首先,你沒看錯,.NET是跨平臺的,可以在Windows、 ...
  • Nodify學習 一:介紹與使用 - 可樂_加冰 - 博客園 (cnblogs.com) Nodify學習 二:添加節點 - 可樂_加冰 - 博客園 (cnblogs.com) 添加節點(nodes) 通過上一篇我們已經創建好了編輯器實例現在我們為編輯器添加一個節點 添加model和viewmode ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...
  • 類型檢查和轉換:當你需要檢查對象是否為特定類型,並且希望在同一時間內將其轉換為那個類型時,模式匹配提供了一種更簡潔的方式來完成這一任務,避免了使用傳統的as和is操作符後還需要進行額外的null檢查。 複雜條件邏輯:在處理複雜的條件邏輯時,特別是涉及到多個條件和類型的情況下,使用模式匹配可以使代碼更 ...
  • 在日常開發中,我們經常需要和文件打交道,特別是桌面開發,有時候就會需要載入大批量的文件,而且可能還會存在部分文件缺失的情況,那麼如何才能快速的判斷文件是否存在呢?如果處理不當的,且文件數量比較多的時候,可能會造成卡頓等情況,進而影響程式的使用體驗。今天就以一個簡單的小例子,簡述兩種不同的判斷文件是否... ...
  • 前言 資料庫併發,數據審計和軟刪除一直是數據持久化方面的經典問題。早些時候,這些工作需要手寫複雜的SQL或者通過存儲過程和觸發器實現。手寫複雜SQL對軟體可維護性構成了相當大的挑戰,隨著SQL字數的變多,用到的嵌套和複雜語法增加,可讀性和可維護性的難度是幾何級暴漲。因此如何在實現功能的同時控制這些S ...