0

我正在使用 StackExchange.Redis 客户端访问 Azure Redis 缓存。我正在创建一个哈希集,如下所示:

Database.HashSet("HashSetKey", "EntryKey", "EntryValue");
Database.KeyExpire("HashSetKey", TimeSpan.MaxValue); 

即使我将到期时间指定为 TimeSpan.MaxValue,哈希集也会在几分钟未使用后被删除。

我错过了什么?

4

1 回答 1

1

将 TimeSpan.MaxValue 设置为密钥到期是没有意义的。您根本不应该设置它,因为它永远不应该被删除。这就是 StackExchange redis 客户端所做的 - 当您放置 TimeSpan.MaxValue 时,它​​实际上根本没有设置过期,它调用 PERSIST 命令
在 StackExchange redis 客户端中查找类 RedisDatabase.cs,方法是

Message GetExpiryMessage( RedisKey key, CommandFlags flags, TimeSpan? expiry, out ServerEndPoint server)

https://github.com/StackExchange/StackExchange.Redis
你也可以调用 Database.KeyTimeToLive 方法,它会为你的 key 返回 0。
它被驱逐的原因可能是因为您的 Azure 缓存设置,它可能设置了 maxmemory 和 evictions 策略:http://redis.io/topics/lru-cache

于 2015-07-02T07:56:00.067 回答