Redis中取得所有Key、過期時間配置與獲取、Key過期通知。
阿新 • • 發佈:2017-07-05
ive exceptio config lee var url multipl -c class
string connection = "127.0.0.1:6379,password=xxxxx,connectRetry=5"; [TestMethod] public void TestSet() { var mutlti = StackExchange.Redis.ConnectionMultiplexer.Connect(connection); var db = mutlti.GetDatabase(0); db.HashSetAsync("student1", new StackExchange.Redis.HashEntry[] { new StackExchange.Redis.HashEntry("name", "song"), new StackExchange.Redis.HashEntry("age", 11), new StackExchange.Redis.HashEntry("sex", "boy") }).GetAwaiter().GetResult(); db.HashSetAsync("student2", new StackExchange.Redis.HashEntry[] { new StackExchange.Redis.HashEntry("name", "wang"), new StackExchange.Redis.HashEntry("age", 22), new StackExchange.Redis.HashEntry("sex", "girl") }).GetAwaiter().GetResult(); mutlti.Close(true); } [TestMethod] public void TestGetList() { var mutlti = StackExchange.Redis.ConnectionMultiplexer.Connect(connection); var endpoints = mutlti.GetEndPoints(); List<string> keyList = new List<string>(); foreach (var ep in endpoints) { var server = mutlti.GetServer(ep); var keys = server.Keys(0, "*"); foreach (var item in keys) { keyList.Add((string)item); } } var db = mutlti.GetDatabase(0); mutlti.Close(true); throw new Exception(string.Join(",", keyList)); } [TestMethod] public void TestGetTime() { var mutlti = StackExchange.Redis.ConnectionMultiplexer.Connect(connection); var db = mutlti.GetDatabase(0); var server = mutlti.GetServer(mutlti.GetEndPoints()[0]); var timeNow = server.Time().ToUniversalTime(); var time = db.KeyTimeToLive("student2"); var expire = time == null ? (DateTime?)null : timeNow.Add(time.Value); //返回UTC時間。 throw new Exception(expire.Value.AddHours(8).ToString("yyyy-MM-dd HH:mm:ss")); } [TestMethod] public void TestSetTime() { var mutlti = StackExchange.Redis.ConnectionMultiplexer.Connect(connection); var db = mutlti.GetDatabase(0); db.KeyExpire("student2", DateTime.Now.AddHours(2)); } [TestMethod] public void TestNotifyOnExpire() { //URL:https://docs.azure.cn/zh-cn/redis-cache/cache-configure //填一個"__keyevent@*__:expired*"試試 //如果不行的話,再改填成:"Kxg"這試試 var tsk = Task.Factory.StartNew(() => { var mutlti = StackExchange.Redis.ConnectionMultiplexer.Connect(connection); var subscriber = mutlti.GetSubscriber(); subscriber.Subscribe("[email protected]__:*", (channel, notificationType) => { Debug.WriteLine(channel + "|" + notificationType); }); while (true) { Thread.Sleep(1000); } }); tsk.Wait(); }
Redis中取得所有Key、過期時間配置與獲取、Key過期通知。