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