Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
memcached只是在实例化另一个虚拟操作系统吗?_Memcached - Fatal编程技术网

memcached只是在实例化另一个虚拟操作系统吗?

memcached只是在实例化另一个虚拟操作系统吗?,memcached,Memcached,我已经阅读了一些关于memcached的教程,我有一些问题,以减轻请求默认数据库的痛苦 什么被实例化以允许memcached运行? 它是安装了mysql之类的虚拟操作系统,还是整个数据库都存储在ram中 我的另一个问题是,假设我有一个博客,使用memcache,一个用户从浏览器请求数据,请求首先检查memcache中的数据,并查看数据是否存在并显示给该用户 如果请求的数据与原始数据库中的数据不匹配,因为我自己更新了它,该怎么办。缓存如何知道我更改了它? 是否总是检查数据库上的数据是否与缓存的数据

我已经阅读了一些关于memcached的教程,我有一些问题,以减轻请求默认数据库的痛苦

什么被实例化以允许memcached运行? 它是安装了mysql之类的虚拟操作系统,还是整个数据库都存储在ram中

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

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

1 您将在每台需要的机器上启动一个memcached服务器,分配一定数量的内存用于memcached。 然后使用memcached库,您将使用每个服务器上的内存量。 注意:无法知道单个对象将存储在哪个服务器上

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

来自:

Memcached是内存中的键值存储,用于存储任意数据字符串的小块、来自数据库调用、API调用或页面呈现结果的对象

尽管memcached经常与MySQL一起使用,但它与MySQL或任何其他数据库都没有特殊的联系。它只是一个简单的键值存储,提供对键缓存的数据的恒定时间O1访问。数据由memcached进程存储在内存中。这在很大程度上得到了解释


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

您真的能理解自己的问题吗?而不是在超时时删除,它会将其标记为无效,并且可能会被覆盖,但它不会因为过期而被删除。