zoukankan      html  css  js  c++  java
  • 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
                //填一个"__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();
            }
  • 相关阅读:
    常见的块级元素和内联(行内)元素
    全屏滚动插件fullPage的使用
    Git使用规范
    MinIO使用教程(待完成)
    [Flutter] CachedNetworkImage加载图片证书校验失败
    [Flutter] 扩展一个支持弹出菜单的IconButton
    [Node.js] 后端服务导出CSV数据流给前端下载
    下载 VMware Tools (VMware 16)
    [Flutter] 在Windows平台中使用VS2019调试win插件
    c#CSV文件生成
  • 原文地址:https://www.cnblogs.com/songxingzhu/p/7120439.html
Copyright © 2011-2022 走看看