Redis中取得所有Key过期时间配置与获取Key过期通知。
Posted 宋兴柱-Sindrol
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis中取得所有Key过期时间配置与获取Key过期通知。相关的知识,希望对你有一定的参考价值。
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 //填一个"[email protected]*__: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过期通知。的主要内容,如果未能解决你的问题,请参考以下文章