您的位置:首页 > 数据库 > Redis

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

2017-07-05 11:37 621 查看
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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: