我使用StackExchange.Redis并构建一些redis客户端接口RedisClientManager.在我的界面中,我有2个密钥设置器(按时间跨度和日期时间到期):按时间跨度:public void Set(string key, object value, TimeSpan timeout)...
我使用StackExchange.Redis并构建一些redis客户端接口RedisClientManager.
在我的界面中,我有2个密钥设置器(按时间跨度和日期时间到期):
按时间跨度:
public void Set(string key, object value, TimeSpan timeout)
{
_cache.StringSet(key, Serialize(value), timeout);
}
截止日期:
public void Set(string key, object value, DateTime expires)
{
_cache.StringSet(key, Serialize(value));
_cache.KeyExpire(key, expires);
}
用法:
按时间跨度:
RedisClientManager.Set(o.Key, o, new TimeSpan(0, 0, 5, 0));
截止日期:
RedisClientManager.Set(o.Key, o, DateTime.UtcNow.AddMinutes(5));
如果我使用Timespan(第一种方法)添加新密钥,则该对象位于Redis缓存中,并在5分钟后过期.
如果使用Date(第二种方法)添加新密钥,则该对象不会添加到Redis.
此问题仅在服务器上发生.在localhost上一切正常.
可能是redis使用本地服务器时间键吗?
我该如何解决这个问题?
使用StackExchange.Redis为密钥设置绝对到期的正确方法是什么?
解决方法:
怎么样……
public void Set(string key, object value, DateTime expires)
{
var expiryTimeSpan = expires.Subtract(DateTime.UtcNow);
_cache.StringSet(key, Serialize(value), expiryTimeSpan);
//or Set(key, value, expiryTimeSpan);
}
沃梦达教程
本文标题为:c# – 按UTC日期的StackExchange.Redis密钥exiperation
基础教程推荐
猜你喜欢
- C#8.0中的索引与范围功能介绍 2023-05-16
- C#单例类的实现方法 2023-01-22
- C#调用百度API实现活体检测的方法 2023-01-28
- WPF实现背景灯光随鼠标闪动效果 2023-03-10
- C#中使用闭包与意想不到的坑详解 2023-03-03
- C#复杂XML反序列化为实体对象两种方式小结 2023-05-26
- C# DataTable常见用法汇总 2023-03-10
- C# 操作Excel代码总结 2022-12-02
- C#关联自定义文件类型到应用程序并实现自动导入功能 2023-04-28
- C#开发WinForm之DataGridView开发详解 2023-03-28