永久数据丢失现象
有时候,在我们使用memcache过程中会出现”数据丢失”的现象, 也就是说明明数据被设为永久有效,却莫名其妙的丢失了,这是怎么回事呢?
在上一篇博客Memcache过期数据惰性和LRU删除机制中已经总结了memcache过期数据是如何被删除的以及根据LRU(最近最少使用机制)来从最近未被使用的记录中搜索,并将其空间分配给新的记录。
所以,遇到这种情况我们只需要从以上两方面来分析,即可得到以下结论:
1、如果Slab中的很多chunk尚未过期, 且非永久数据比较活跃,此时新增item,则永久数据被踢;
2、如果Slab中的很多chunk已经过期, 且过期前比较活跃以及过期后未被get过,系统不知道他们已经过期,此时新增item, 则永久数据被踢;
3、如果Slab中的很多chunk已经过期,且被get过,被标记为expire(过期),此时新增item,则永久数据不会被踢;
用图表示如下:
避免永久数据被踢现象的解决方案:
永久数据和非永久数据分开放,具体如何设计,看具体环境。
(end)
- 原文作者:maratrix
- 原文链接:https://maratrix.cn/post/2015/03/29/memcache_perpetual_data_lose/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。