Memcache最大密钥到期时间
什么是memcached的最大密钥到期时间?
如果我没有提供到期时间并且caching满了,会发生什么情况?
您可以通过提供Unix时间戳而不是天数来将密钥到期设置为date。 这个date将来可能会超过30天:
到期时间以无符号整数秒指定。 它们可以从0(意为“永不过期”)设置为30天(60 * 60 * 24 * 30)。 超过30天的时间被解释为unix时间戳date。 如果你想在明年1月1日到期,那么你就是这样做的。
https://github.com/memcached/memcached/wiki/Programming#expiration
但是, 正如你所说 ,如果你设定的关键到期时间,而不是一个date,最多2,592,000秒,或30天。
如果您没有提供到期时间并且caching满了,那么最早的键值将首先到期:
内存也是回收的时候存储一个新的项目。 如果没有空闲块,并且在相应的slab类中没有空闲页面,则memcached将查看LRU的结尾以便“回收”一个项目。 它将search尾部的最后几个项目,这个项目已经过期,因此可以重复使用。 如果它找不到一个过期的项目,它将“驱逐”一个还没有过期的项目。 然后在几个统计柜台上注意到这一点
https://github.com/memcached/memcached/wiki/UserInternals#when-are-items-evicted
没有没有限制。 30天的限制是,如果你给它的秒数,它应该停留在那里,但如果你给一个时间戳,那么在机器上只有最大的long或者int值,这可能是一个限制。
->set('key', 'value', time() + 24*60*60*365)
会使密钥停留在那里一年,但是如果caching变满或者在两者之间重新启动,可以删除。
到期时间,以秒为单位。 可以长达30天。 30天之后,将被视为确切date的unix时间戳。
https://code.google.com/p/memcached/wiki/NewCommands#Standard_Protocol
好的,我发现秒数不能超过2592000(30天)。 所以最大的到期时间是30天。
在laravel config.session.lifetime
设置,如果设置为等于30天以上,将被视为时间戳(如果使用memcached
每次都会出现token mismatch
的错误)。
要回答,memcached过期可以随时设置。 (Laravel的默认设置(5.0版本)会将你设置为一个已经过期的时间戳)。 如果你没有设置,将使用defualt。
看起来有些答案不再有效。
当TTL太高时,我发现一个密钥根本就没有设置。 例如2992553564
。
testing以下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
。
- Rails 3.1的Rails.cache错误 – TypeError:不能用默认的proc转储hash
- Memcache(d)与Varnish加速三层Web架构
- windows – php_memcache.dll – 用于PHP 5.4
- 您使用哪个.NET Memcached客户端,EnyimMemcached与BeITMemcached?
- 我应该何时使用Memcache而不是Memcached?
- 如何停止和重新启动memcached服务器?
- 替代memcached,可以坚持到磁盘
- Memcached与APC哪一个我应该select?
- 我可以让Memcached在Windows(64位)64位环境中运行吗?