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过期通知。的主要内容,如果未能解决你的问题,请参考以下文章

redis设置过期时间等

如何获取redis中String类型的全部key值

Redis 配置过期自动删除策略

redis key过期监听

Redis 过期策略 和 回收策略

如何使用Java来获取redis中某个key的所有数据