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(); db.HashSetAsync("student1", new StackExchange.Redis.HashEntry[] {
new StackExchange.Redis.HashEntry("name", "song"),
new StackExchange.Redis.HashEntry("age", ),
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", ),
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(, "*");
foreach (var item in keys)
{
keyList.Add((string)item);
}
}
var db = mutlti.GetDatabase();
mutlti.Close(true);
throw new Exception(string.Join(",", keyList));
}
[TestMethod]
public void TestGetTime()
{
var mutlti = StackExchange.Redis.ConnectionMultiplexer.Connect(connection);
var db = mutlti.GetDatabase();
var server = mutlti.GetServer(mutlti.GetEndPoints()[]);
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().ToString("yyyy-MM-dd HH:mm:ss")); }
[TestMethod]
public void TestSetTime()
{
var mutlti = StackExchange.Redis.ConnectionMultiplexer.Connect(connection);
var db = mutlti.GetDatabase();
db.KeyExpire("student2", DateTime.Now.AddHours());
}
[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();
}
});
tsk.Wait();
}

Redis中取得所有Key、过期时间配置与获取、Key过期通知。的更多相关文章

  1. C# Cache 设定缓存过期时间方法 绝对过期时间 和 相对过期时间(即:访问激活后不过期)

    摘自: http://www.cnblogs.com/zj1111184556/p/3493840.html 1. 设定绝对过期时间 /// <summary> /// 设定绝对的过期时间 ...

  2. redis入门指南(三)—— 事务、过期时间、SORT命令、消息通知与管道

    写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 事务 1.redis中的事务由一组命令的集合组成,要么都执行,要么都不执行,同时redis的事务 ...

  3. (Oracle)数据库用户的密码过期时间如何修改为永不过期

    Oracle的密码过期规则是用Profile来管理的,系统默认只有一个Profile(DEFAULT),该profile的密码过期规则为180天.那么如何修改Oracle数据库用户的密码过期时间为永不 ...

  4. Manifest中meta-data扩展元素数据的配置与获取

    简介-meta是什么 在AndroidManifest.xml清单文件中 我们有时会看到如下类似的<meta-data ... >元素开始的配置内容: <meta-data andr ...

  5. 在Redis中设置了过期时间的Key,需要注意哪些问题?

    熟悉Redis的同学应该知道,Redis的每个Key都可以设置一个过期时间,当达到过期时间的时候,这个key就会被自动删除. 在为key设置过期时间需要注意的事项 1. DEL/SET/GETSET等 ...

  6. 超大批量删除redis中无用key+配置

    目前线上一个单实例redis中无用的key太多,决定删除一部分. 1.删除指定用户的key,使用redis的pipeline 根据一定条件把需要删除的用户统计出来,放到一个表里面,表为 del_use ...

  7. redis学习(五) redis过期时间

    redis过期时间 1.redis过期时间介绍 有时候我们并不希望redis的key一直存在.例如缓存,验证码等数据,我们希望它们能在一定时间内自动的被销毁.redis提供了一些命令,能够让我们对ke ...

  8. Redis 中的过期元素是如何被处理的?视频+图文版给你答案——面试突击 002 期

    本文以面试问题「Redis 中的过期元素是如何被处理的?」为切入点,用视频加图文的方式和大家聊聊 Redis 过期元素被处理的相关知识点. 涉及的知识点 过期删除策略有哪些? 这些过期策略有哪些优缺点 ...

  9. 代码实测:给redis中的key取一个正确的名字多么重要

    redis对写入的key长度有限制吗? 太长的key对性能有影响吗? key越长对性能影响越大? 如何评估键长度对性能的影响? talk is cheap, show me the code! 今天我 ...

随机推荐

  1. ZServer4D开源项目

    ZServer4D开源项目 ZServer4D 是一套从商业项目剥离而出的云服务器中间件,可以承载百万级的分布式负载服务,并且支持IoT及内网穿透. 作者将它开源了 https://github.co ...

  2. Java 下载文件

    public @ResponseBody void exportExcel(HttpServletRequest request, HttpServletResponse response, Khxx ...

  3. 【Devops】【docker】【CI/CD】2.docker启动jenkins环境+安装必要的插件

    [注意:]jenkins的docker镜像,需要从官网进入直接获取,其他地方获取到的docker镜像,可能因为Jenkins版本过低,导致后续插件安装失败等问题!!! ================ ...

  4. Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式

    from://http://blog.csdn.net/androiddevelop/article/details/11100109 相关文章列表: <Android 自动编译.打包生成apk ...

  5. C# 泛型的简单理解(安全、集合、方法、约束、继承)

    前言 泛型允许你在编译时实现类型安全.它们允许你创建一个数据结构而不限于一特定的数据类型.然而,当使用该数据结构时,编译器保证它使用的类型与类型安全是相一致的.泛型提供了类型安全,但是没有造成任何性能 ...

  6. ios之归档demo

    ios对自定义对象的归档.首先需要实现NSCoding与NSCopying接口 #import <Foundation/Foundation.h> @interface Person : ...

  7. 【UOJ Round #5】

    构造+贪心/数论 为什么只有两个标题呢……因为第二题我不会…… 怎样提高智商 构造题……然而一开始半天我都yy不出来…… 后来我想:这题应该不会特别麻烦,而且既然样例只给了1,可能再给大一点就让人发现 ...

  8. 【Codeforces】【#295】【Div.1】

    嘛,一直以来蒟蒻都没怎么打过CF……现在还是蓝名狗……今天跟着zyf打了一场virtual,果断一题滚粗

  9. FreePascal - Typhon在Windows10 X64下的使用问题!

    Typhon是CodeTyphon中的开发FreePascal的IDE工具. 在Windows10 X64中安装完CodeTyphon后,我们会发现有两套Typhon,分别对应32位和64位,32位可 ...

  10. Go语言之进阶篇爬百度贴吧并发版

    1.爬百度贴吧并发版 示例: package main import ( "fmt" "net/http" "os" "strco ...