2011-12-06 48 views
0

我已阅读了memcached的一些教程,并且我有几个问题,以缓解对默认数据库的请求的痛苦。是memcached只是实例化另一个虚拟操作系统?

什么是正在实例化允许memcached来操作?
是安装了mysql的虚拟操作系统还是整个数据库存储在内存中?

我的另一个问题是说我有一个博客并使用memcache,并且用户从浏览器请求数据,请求首先检查数据的memcache,并看到数据存在并显示给该用户。

如果所请求的数据与原始数据库上的数据不匹配,那么该怎么办?因为我自己更新了它。缓存怎么知道我改变了它?
它是否总是检查数据库上的数据是否与缓存相同?

+0

你真的可以理解你自己的问题吗? – Macmade

回答

0


你会开始在每一个你需要机memcached服务器,分配的内存量奉献给memcached的。
然后在库memcached中,您将使用每台服务器上的大量内存。
注意:没有办法知道在哪个服务器上存储单个对象。


重复的机构是很容易:可以设置超时的对象。超时时间过后,系统将删除该对象。
要存储一个对象,您将为该对象分配一个键作为散列,因为您不希望该对象具有相同的键。

+0

而不是删除,在超​​时时,它会将其标记为无效,并且**可能被**覆盖,但不会因过期而被删除。 – StormByte

0

the memcached front-page

Memcached是从数据库调用,API调用,或网页渲染的结果任意数据的小块(字符串,对象)在内存中的键值存储。

虽然memcached经常与MySQL一起使用,但它与MySQL或任何其他数据库没有特别的联系。它只是一个简单的键值存储,提供对键缓存的数据的持续时间(O(1))访问。数据由memcached进程存储在内存中。 (其中大部分解释为on the FAQ)。

关于第二个问题,确实是您的应用程序/您的责任,以确保memcached被通知任何更改。您可以通过缓存数据的合理到期时间来执行此操作,或者使用脚本或命令行界面手动清除过期条目。如果通过框架进行更改,某些框架将处理通知memcached的更改。最终,如果您需要确保用户始终能够实时访问最新数据,缓存不是解决您的问题的好方法。缓存的工作原理是可以偶尔提供陈旧的数据 - 您应该构建应用程序,以便缓存可能陈旧的数据,但始终使用查找权威来源来查找必须是必须新鲜的数据。

相关问题