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