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