Memcache最大密钥到期时间

cfi*_*her 45 memcached

什么是memcached的最大密钥到期时间?

如果我没有提供到期时间并且缓存已满,那么会发生什么?

Pau*_*ite 53

您可以通过提供Unix时间戳而不是天数来将密钥到期日期设置为日期.此日期将来可能超过30天:

到期时间以无符号整数秒指定.它们可以设置为0,表示"永不过期",设置为30天(60*60*24*30).任何高于30天的时间都被解释为unix时间戳日期.如果你想在明年1月1日到期一个对象,你就是这样做的.

https://github.com/memcached/memcached/wiki/Programming#expiration

但是,正如您所说,如果您将密钥过期设置为一段时间而不是一个日期,则最大值为2,592,000秒或30天.

  • OMG,我们在Rails中有很多案例:ex​​pires_in => 1.month.更改为1.month.from_now以使用日期. (3认同)
  • 引用的链接是死的:( (2认同)

Eim*_*tas 16

如果您未提供过期并且缓存已满,则最早的键值将首先过期:

在存储新项目时还会回收内存.如果没有空闲块,并且在相应的slab类中没有空闲页面,则memcached将查看LRU的末尾以查找"回收"项目.它将在尾部的最后几个项目中搜索已经过期的项目,因此可以重复使用.但是,如果找不到过期的项目,它将"逐出"尚未过期的项目.然后在几个统计计数器中注意到这一点

https://github.com/memcached/memcached/wiki/UserInternals#when-are-items-evicted

  • 你对此有100%的把握吗? (2认同)
  • `当存储新物品时,内存也会被回收.如果没有空闲块,并且在相应的slab类中没有空闲页面,则memcached将查看LRU的末尾以查找"回收"项目.它将在尾部的最后几个项目中搜索已经过期的项目,因此可以重复使用.但是,如果找不到过期的项目,它将"逐出"尚未过期的项目.然后在几个统计计数器中注意到这一点 (2认同)

小智 10

没有限制.30天的限制是你给它应该留在那里的秒数,但是如果你给出一个时间戳,那么机器上只有max long或int值可以是一个限制.

->set('key', 'value', time() + 24*60*60*365) 例如,密钥会在那里停留一年,但是如果缓存已满或在两者之间重新启动,则可以删除此值.