回答
通过提供Unix时间戳而不是天数,可以将密钥过期设置为日期。此日期将来可能超过30天:
过期时间以无符号整数秒指定。它们可以从0(意为“永不过期”)设置为30天(60 * 60 * 24 * 30)。超过30天的任何时间都被解释为unix时间戳日期。如果你想在明年1月1日到期,那么你就是这样做的。
https://github.com/memcached/memcached/wiki/Programming#expiration
但是,as you say,如果你设定键期满的时间量,而不是一个日期,最大值是2592000秒,或30天。
如果不提供到期和缓存已满,则最古老的键值首先过期:
内存也回收时,它的时间来存储一个新的项目。如果没有空闲的块,并且在适当的slab类中没有空闲页面,memcached会查看LRU的末尾,以便“回收”该项目。它将搜索尾部中的最后几个项目,这个项目已经过期,因此可以重复使用。如果它找不到过期的商品,它将“驱逐”尚未过期的商品。这是在随后的几个统计计数器
https://github.com/memcached/memcached/wiki/UserInternals#when-are-items-evicted
你对此100%肯定吗? – 2011-06-09 18:09:32
是的,@DeeJay',刚刚发现这篇文章:http://code.google.com/p/memcached/wiki/NewUserInternals – Brett 2012-10-17 19:53:15
'当存储新项目时,内存也被回收。如果没有空闲的块,并且在适当的slab类中没有空闲页面,memcached会查看LRU的末尾,以便“回收”该项目。它将搜索尾部中的最后几个项目,这个项目已经过期,因此可以重复使用。如果它找不到过期的商品,它将“驱逐”尚未过期的商品。然后在几个统计计数器中注意到这一点。' – Brett 2012-10-17 19:53:47
不,没有限制。 30天的限制是,如果您给出应该停留在那里的秒数,但是如果您给出时间戳,那么机器上只有最大长整数或整数值可以是限制。
->set('key', 'value', time() + 24*60*60*365)
会使密钥在那里停留一年,但是如果缓存变满或在两者之间重新启动,则可以删除该值。
过期时间,以秒为单位。可以长达30天。 30天后, 被视为确切日期的unix时间戳。
https://code.google.com/p/memcached/wiki/NewCommands#Standard_Protocol
在laravel config.session.lifetime
设置,如果设定为上述30天等价物,将被认为是一个时间戳(这会给token mismatch
每次假定memcached
使用的错误)。
要回答,可以随时设置memcached过期。 (Laravel的默认设置(在5.0版本上)会将您设置为已过期的时间戳)。如果你没有设置,将使用defualt。
看起来有些答案不再有效。
当TTL太高时,我发现一个密钥没有设置。例如2992553564
。
测试了下面的PHP代码:
var_dump($memcached->set($id, "hello", 2992553564); // true
var_dump($memcached->get($id)); // empty!
var_dump($memcached->set($id, "hello", 500); // true
var_dump($memcached->get($id)); // "hello"
版本是memcached 1.4.14-0ubuntu9
。
- 1. PHP Memcache密钥到期
- 2. memcache是否刷新expriry时间密钥
- 3. Memcache getItemCount()计算过期的密钥?
- 4. Memcache:增加所有密钥到期日期
- 5. Memcache过期时间
- 6. Memcache + PHP会话调优:memcache如何过期密钥?
- 7. Memcache未设置密钥
- 8. 得到json的最大数密钥
- 9. Memcache配置过期时间
- 10. 添加Redis过期到一大堆名称空间的密钥?
- 11. 找到最大值密钥对
- 12. InnoDB最大密钥长度
- 13. Cassandra的最大密钥大小
- 14. PBE中的最大密钥大小?
- 15. NSDictionary数据密钥的最大大小
- 16. memcache:更新密钥的策略?
- 17. memcache技巧 - 选择理想的密钥
- 18. 如何限制密钥空间cassandra的最大大小?
- 19. .NET RSA加密:最小密钥大小?
- 20. 如何获得laravel(文件)缓存的密钥到期时间?
- 21. redis密钥到期时间的上限和下限时间限制
- 22. Memcache系统 - 密钥频繁掉线
- 23. 从查询中生成Memcache密钥
- 24. 密码到期时间CS4
- 25. 在到期时间后,redis密钥没有被删除
- 26. 获取SortList中的最大密钥
- 27. 获取字典中的最大密钥
- 28. 获取最大值的字典密钥
- 29. 大型密钥的最佳c#集合
- 30. Ruby:基于时间的加密密钥?
OMG,我们在Rails中有很多例子:expires_in => 1.month。更改为1.month.from_now以使用日期。 – 2013-07-03 20:46:26
引用的链接已经死了:( – marcgg 2014-03-19 09:24:18
@marcgg:aha是的,很好地发现了,谢谢你修正了 – 2014-03-19 09:47:51