(首先,我的英文不是很好,拜托了)
众所周知,memcached 提供延迟到期,并“替换”其slab 中的LRU 数据,但是我不太清楚它是如何做到这一点的。例如,如果一个slab已经满了,但是这个slab中的一些数据已经过期了,那么当数据被添加到slab时会发生什么?
据我所知,延迟过期是这样的,memcached 不会主动从每个平板中删除过期数据,而是仅在引用过期条目的键时删除过期条目。这是一种资源浪费,不是吗?
当一个项目被请求(一个获取请求)时,Memcached 在将它返回给客户端之前会检查过期时间以查看该项目是否仍然有效。
类似地,当向缓存添加新项目时,如果缓存已满,它将在替换缓存中最少使用的项目之前查找要替换的过期项目。
因此,只有在为过期项目发送获取请求或因需要存储而清除过期项目时,才会清除过期项目。
| 归档时间: |
|
| 查看次数: |
4353 次 |
| 最近记录: |