gpt4 book ai didi

c# - StackExchange.Redis key 按 UTC 日期过期

转载 作者:太空狗 更新时间:2023-10-29 22:36:51 29 4
gpt4 key购买 nike

我正在使用 StackExchange.Redis 并构建一个 Redis 客户端接口(interface) RedisClientManager。在我的界面中,我有 2 个 key setter (按时间跨度到期和日期时间到期):

按时间跨度:

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 分钟后过期。如果我使用日期添加新键(第二种方法),则该对象不会添加到 Redis。

此问题仅发生在服务器上。在本地主机上一切正常。

也许 Redis 对 key 使用本地服务器时间?

我该如何解决这个问题?使用 StackExchange.Redis 为 key 设置绝对过期的正确方法是什么?

最佳答案

怎么样……

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# - StackExchange.Redis key 按 UTC 日期过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30235277/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com