Memcachedの最大キー有効期限は何ですか?
有効期限を指定せずにキャッシュがいっぱいになった場合、どうなりますか?
日数の代わりにUnixタイムスタンプを指定することにより、キーの有効期限を日付に設定できます。この日付は30日以上先になる可能性があります。
有効期限は、符号なし整数秒で指定されます。 「無期限」を意味する0から30日間(60 * 60 * 24 * 30)まで設定できます。 30日を超える時間は、Unixタイムスタンプ日付として解釈されます。来年の1月1日にオブジェクトを期限切れにしたい場合、これがその方法です。
https://github.com/memcached/memcached/wiki/Programming#expiration
ただし、 おっしゃるように 、キーの有効期限を日付ではなく時間に設定する場合、最大値は2,592,000秒、つまり30日です。
有効期限を指定せず、キャッシュがいっぱいになると、最も古いKey-Valueが最初に期限切れになります。
また、新しいアイテムを保存するときにメモリが解放されます。空きチャンクがなく、適切なスラブクラスに空きページがない場合、memcachedはLRUの最後で「再生」するアイテムを探します。テール内の最後のいくつかのアイテムを検索して、すでに有効期限が切れているものを探します。したがって、再利用は無料です。ただし、期限切れのアイテムが見つからない場合は、まだ期限切れになっていないアイテムを「排除」します。これは、いくつかの統計カウンターで記録されます
https://github.com/memcached/memcached/wiki/UserInternals#when-are-items-evicted
いいえ、制限はありません。 30日間の制限は、そこに滞在する秒数を指定する場合ですが、タイムスタンプを指定する場合、制限できるマシンの最大longまたはint値のみがあります。
->set('key', 'value', time() + 24*60*60*365)
は、たとえばキーを1年間そのままにしますが、キャッシュがいっぱいになるか、その間にキャッシュが再開される場合、この値は削除できます。
有効期限(秒単位)。 30日まで可能です。 30日後、正確な日付のUNIXタイムスタンプとして扱われます。
https://code.google.com/p/memcached/wiki/NewCommands#Standard_Protocol
OK、秒数は2592000(30日)を超えないことがわかりました。したがって、最大有効期限は30日間です。
一部の回答が無効になっているようです。
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
。
オンlaravel config.session.lifetime
設定は、上記の30日間に相当するように設定されている場合、タイムスタンプと見なされます(これによりtoken mismatch
常にmemcached
が使用されていると仮定しています)。
答えとして、memcachedの有効期限はいつでも設定できます。 (Laravelのデフォルト設定(v5.0)では、すでに有効期限切れのタイムスタンプに設定されます)。設定しなかった場合は、デフォルトが使用されます。