memcached是否保证对象的持久IN-MEMORY存储,只要它正在运行并且可用的配置内存空间足够?
一个例子是存储消息系统的会话数据。在什么情况下我会尝试从memcached中读取一个密钥(我之前写过,没有针对该密钥的数据超时)并获得空响应?当超出配置内存时,memcached的行为是什么(它会换出一些数据,它会换出哪些数据)?
答案 0 :(得分:1)
memcached永远不会保证它会返回您存储在其中的内容。作为缓存,它只保证它不会返回你没有告诉它有效的数据(或者告诉它它是无效的)。
答案 1 :(得分:1)
我遇到过这个问题,你无法预测哪些数据会被删除。被换出的数据取决于您要缓存的新数据的大小以及memcached内存中的slab and chunk大小。
答案 2 :(得分:1)
要记住的重点 Memcached没有内部机制来跟踪可能发生的未命中。 当缓存大小已满时,将以LFU顺序删除旧数据。因此客户端必须将Memcached视为暂时缓存;他们不能假设存储在Memcached中的数据总是在那里。 Memcached不支持任何群集功能。 实现应用程序打算在memcached中缓存的数据结构序列化非常重要。 当存储在缓存中的对象从业务角度来看不再有效时,应用程序必须确保手动将其从缓存中删除。例如,如果应用程序将产品信息存储在缓存中,那么在产品不再可用的情况下,需要从缓存中手动删除它。