也许您的问题就像我的问题:我只有几台用于memcached的机器,但是有很多内存。即使其中之一发生故障或需要重新引导,它也会严重影响系统的性能。根据最初的内存缓存哲学,我应该添加更多的机器,每台机器的内存更少,但这并不划算,也不是“绿色IT”;)
对于我们的解决方案,我们为Cache系统构建了一个接口层,以便像 对流 一样可以 嵌套
基础缓存系统的提供程序,并为memcached以及我们自己非常简单的Key-Value编写了一个缓存提供程序。
-2-磁盘存储提供程序。然后,我们为缓存项定义权重,该权重表示如果无法从缓存中检索到项,则重建项的成本是多少。嵌套磁盘缓存仅用于权重高于某个阈值的项目,可能占所有项目的大约10%。
将对象存储在缓存中时,我们不会浪费时间,因为无论如何,保存到一个或两个缓存都将排队等待异步执行。因此,写入磁盘缓存不需要太快。读取内容相同:首先,我们使用memcached,只有当它不存在并且它是一个“昂贵的”对象时,我们才检查磁盘缓存(从数量上说,它比memcached慢,但仍然好得多,然后重新计算30
GB一台机器故障后的数据)。
这样,我们就可以从两全其美的方式中获得最大的收益,而无需用任何新东西来代替内存缓存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)