我正在使用StackExchange.Redis客户端访问Azure Redis缓存。我正在创建一个hashset,如下所示:
Database.HashSet("HashSetKey", "EntryKey", "EntryValue");
Database.KeyExpire("HashSetKey", TimeSpan.MaxValue);
即使我将Expiry指定为TimeSpan.MaxValue,也会在几分钟未使用后删除hashset。
我缺少什么?
答案 0 :(得分:1)
将TimeSpan.MaxValue设置为密钥到期没有意义。你根本不应该设置它,因为永远不应该删除它。这就是StackExchange redis客户端所做的事情 - 当你放入TimeSpan.MaxValue它实际上根本没有设置到期时,它调用PERSIST命令
在StackExchange中,redis客户端查找RedisDatabase.cs类
方法是
消息GetExpiryMessage(RedisKey键,CommandFlags标志,TimeSpan?到期,输出ServerEndPoint服务器)
https://github.com/StackExchange/StackExchange.Redis
您也可以调用Database.KeyTimeToLive方法,它将为您的密钥返回0。
它被驱逐的原因可能是因为您的Azure缓存设置,它可能设置了maxmemory和驱逐策略:http://redis.io/topics/lru-cache