【发布时间】:2015-05-14 10:41:58
【问题描述】:
我正在使用 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。
此问题仅发生在服务器上。在本地主机上一切正常。
也许 Redis 使用本地服务器时间作为密钥?
我该如何解决这个问题?使用StackExchange.Redis 设置密钥绝对过期的正确方法是什么?
【问题讨论】:
标签: c# asp.net stackexchange.redis