首页 > 其他 > 详细

Redis中取得所有Key、过期时间配置与获取、Key过期通知。

时间:2017-07-05 13:07:16      阅读:653      评论:0      收藏:0      [点我收藏+]
 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("__keyspace@0__:*", (channel, notificationType) =>
                  {
                      Debug.WriteLine(channel + "|" + notificationType);
                  });
                  while (true)
                  {
                      Thread.Sleep(1000);
                  }
              });
            tsk.Wait();
        }

 

Redis中取得所有Key、过期时间配置与获取、Key过期通知。

原文:http://www.cnblogs.com/songxingzhu/p/7120439.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!