我使用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# GridControl的模糊查询实现代码 2022-10-27
 - C#利用itext实现PDF页面处理与切分 2023-06-05
 - C#集合之队列的用法 2023-05-30
 - c# – Metro / WinRT / Windows 8是否可以从后面的代码中清除元素的绑定? 2023-09-18
 - C#实现简单串口通讯实例 2023-05-22
 - C#如何连接服务器共享文件夹 2022-12-11
 - C#中GDI+绘制圆弧及圆角矩形等比缩放的绘制 2023-07-04
 - Unity 静态变量跨场景操作 2023-04-14
 - C# 获取进程退出代码的实现示例 2023-01-11
 - 一次有趣的Linux下.Net Core与C语言的合作开发体验:生成Linux标准的用户密码串 2023-09-26
 
						
						
						
						
						
				
				
				
				