我使用REDIS存储数据(字符串)。 例如: 关键" s1"商店价值"你好世界"。 关键" s2"存储价值" bye bye"。 我想在5分钟后s1自动过期(可用内存),但s2永不过期。 我使用C#,。net 4.0>>怎么编码? 感谢
答案 0 :(得分:5)
如果您计划将Redis用作每个密钥都有过期设置的缓存,您可以考虑使用以下配置(假设最大内存限制为2兆字节为例):
maxmemory 2mb
maxmemory-policy allkeys-lru
在此配置中,应用程序无需使用EXPIRE命令(或等效命令)为密钥设置生存时间,因为只要我们达到2兆字节内存,所有密钥都将使用近似LRU算法逐出限制。
基本上在这种配置中,Redis的行为与memcached类似。我们有关于将Redis用作LRU缓存的更多文档。
答案 1 :(得分:3)
有关EXPIRE的文档允许您设置每个键的EXPIRE值,以秒为单位。
EXPIRE s1 300
将在5分钟后使密钥s1到期。
请参阅此处的文档:REDIS EXPIRE
如果您正在寻找C#代码,我认为这将取决于您使用哪个库来访问REDIS。 还有其他一些可能有帮助的SO问题,但也讨论过期无效的问题:Redis Expire does not work
答案 2 :(得分:2)
对于我使用REDIS Azure的情况,我希望确保我不必继续扩展我的无用数据服务。我发现maxmemory LRU / FIFO似乎就是为了这个目的:
http://redis.io/topics/lru-cache
在REDIS Azure中,可以将Maxmemory Policy设置为管理门户中任何允许的LRU方案。
答案 3 :(得分:1)
默认情况下,redis不会使键过期,它会将过期时间设置为-1,除非您设置了“s2”时间,否则它将是无限制的。
通常创建Redis密钥时没有相关的生存时间。 密钥将永远存在,除非用户将其删除 一种明确的方式,例如使用DEL命令。
EXPIRE命令系列能够以成本将过期与给定密钥相关联 密钥使用的一些额外内存。当密钥到期时 设置,Redis将确保在指定金额时删除密钥 时间过去了。