REDIS耐用性?如何自动过期数据?

时间:2014-06-30 04:17:15

标签: .net caching redis durability

我使用REDIS存储数据(字符串)。 例如: 关键" s1"商店价值"你好世界"。 关键" s2"存储价值" bye bye"。 我想在5分钟后s1自动过期(可用内存),但s2永不过期。 我使用C#,。net 4.0>>怎么编码? 感谢

4 个答案:

答案 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将确保在指定金额时删除密钥   时间过去了。

     

http://redis.io/commands/expire(再次)