private static void Main(string[] args) { IDatabase database = RedisHelper.ConnectionRedisMultiplexer.GetDatabase(5); RedisLockHelper redisLock = new RedisLockHelper(database); int j = 0; ////测试1 //for (int i = 0; i < 200; i++) //{ // ThreadPool.QueueUserWorkItem(s => Console.WriteLine(++j));//连库测试更直观 //} //测试2 for (int i = 0; i < 20; i++) { ThreadPool.QueueUserWorkItem(s => { var result = redisLock.LockAsync("Lock:Object", TimeSpan.FromMilliseconds(500)).GetAwaiter().GetResult(); if (result.Item1) { Console.WriteLine(++j); } }); } //threads.ForEach(p => p.Start()); Console.Read(); }
private void btnSend_Click(object sender, System.EventArgs e) { using (var redLock = RedisLockHelper.GrabLock(1)) // 有 async 的版本 { // 確定取得 lock 所有權 if (redLock.IsAcquired) { // 執行需要獨佔資源的核心工作 RedisProducer.Publish("RedisSample1", new PressureTestContentEvent { Content = "RedisSample1", CreateDateTime = DateTime.Now }); } } RedisProducer.Publish("RedisSample2", new PressureTestContentEvent { Content = "RedisSample2", CreateDateTime = DateTime.Now }); RedisProducer.Publish("RedisSample3", new PressureTestContentEvent { Content = "RedisSample3", CreateDateTime = DateTime.Now }); }