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