在經過漫長的技術沉澱,終於又為 .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(掃碼支持作者):微信: |
騰訊雲產品福利專區 |