当前位置:  开发笔记 > 数据库 > 正文

Memcache最大密钥到期时间

如何解决《Memcache最大密钥到期时间》经验,为你挑选了3个好方法。

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

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



1> Paul D. Wait..:

您可以通过提供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以使用日期.
引用的链接是死的:(

2> Eimantas..:

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

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

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


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

3> 小智..:

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

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

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有