我已经阅读了一些关于 memcached 的教程,我有几个问题,以减轻对默认数据库的请求的痛苦。
正在实例化什么以允许 memcached 运行? 是安装了mysql的虚拟操作系统还是将数据库整体存储在ram中?
我的另一个问题是说我有一个博客并使用内存缓存,用户来自浏览器请求数据,请求首先检查内存缓存中的数据并看到数据存在并显示给该用户。
如果请求的数据与原始数据库上的数据不匹配,因为我自己更新了该数据。缓存怎么会知道我改变了呢? 是否总是检查数据库上的数据是否与缓存的数据相同?
答案 0 :(得分:0)
<强> 1 强>
您将在您需要的每台机器中启动一个memcached服务器,为memcached分配一定量的内存
然后使用memcached库,您将使用每台服务器上的内存量
注意:无法知道将在哪个服务器中存储单个对象。
<强> 2 强>
重复的机制很简单:您可以为对象设置超时。超时结束后,系统将删除该对象
要存储一个对象,您将为该对象分配一个键作为哈希值,因为您不希望该对象具有相同的键。
答案 1 :(得分:0)
Memcached是一个内存中的键值存储,用于存储来自数据库调用,API调用或页面呈现结果的小块任意数据(字符串,对象)。
尽管memcached经常与MySQL一起使用,但它与MySQL或任何其他数据库没有特别的联系。它只是一个简单的键值存储,提供对键缓存的数据的恒定时间(O(1))访问。数据由memcached进程存储在内存中。 (其中大部分解释为on the FAQ)。
关于您的第二个问题,确保memcached被通知任何更改是您的应用程序/您的责任。您可以通过缓存数据的合理有效期或使用脚本或命令行界面手动清除过时条目来执行此操作。如果通过框架进行更改,某些框架将处理通知memcached的更改。最终,如果您需要确保用户始终能够实时访问最新数据,那么缓存不是解决问题的好方法。缓存的工作原理是偶尔可以提供陈旧的数据 - 您应该构建应用程序,以便缓存可能过时的数据,但始终使用查找来查找必须很新鲜。