php - Warum ist „flush_all' von Memcached so konzipiert, dass es nur Schlüssel, aber keine Werte löscht?
PHP中文网2017-06-12 09:20:27
0
1
567
Das Nichtlöschen des Werts bedeutet, dass der Wert weiterhin Speicherplatz belegt und ohne den Schlüssel nicht auf die Existenz dieser Werte zugegriffen werden kann. Was bedeutet das?
你可以看一下这篇文章:
Lazy Expiration
memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。 这种技术被称为lazy(惰性)expiration。因此,memcached不会在过期监视上耗费CPU时间。
flush_all只做一件事:把所有键值标记为已过期,但并不回收内存。因为当时没有回收内存这个必要。只有当下一次用户访问同一键值时,memcached才检查键值,这时发现此键值已过期,于是回收对应此键值的内存。这样做的目的是为了最大限度的节省CPU时间。