use*_*407 6 php mysql memcached memory-management
我是memcached的新手,刚刚开始使用它.我有几个问题:
我已经在我的php数据库类中实现了MemCached,我将结果集(数组)存储在memcache中.我的问题是,对于网站来说,如果4个用户访问相同的页面和相同的查询执行过程,那么memcache会做什么?根据我对1个用户的理解,它将从DB中获取,其余3个系统将使用Memcache.是对的吗?
4个用户意味着它会生成memcache的对象吗?但所有人都会使用相同的记忆?同样适用于网站上的2个不同页面?正如bith页面将使用
$obj = memcached->connect(parameter);
Run Code Online (Sandbox Code Playgroud)我做了一个小测试.但结果是starnge,当我用普通的mysql语句执行查询时,执行时间低于我的代码使用memcached时的执行时间?这是为什么?如果那就是为什么每个写入内存的地方都是快速的.
请举一些例子来有效地测试memcached执行时间与mormal的比较mysql_fetch_object.
使用 memcache 有两个原因:
1. 卸载您的数据库服务器
也就是说,如果您的数据库服务器负载很高,因为您一遍又一遍地查询相同的内容,并且内部 mysql 缓存的工作速度不如预期。或者您可能遇到写入性能问题导致服务器阻塞,那么 memcache 将帮助您以一致且更好的方式卸载 mysql。
如果您自己的服务器没有压力,那么如果主要是为了提高性能,那么使用 memcached 可能没有任何优势。Memcached 仍然是一个服务器,您仍然需要连接到它并与其通信,因此网络方面仍然保留。
2. 用户之间共享数据而不依赖数据库
在另一种情况下,您可能希望在 Web 应用程序的用户之间共享某些数据或状态,而不依赖于文件或 SQL 服务器。使用memcached,您可以从用户的角度设置值并从另一个用户加载它。
很好的例子就是用户之间的聊天日志,您不想将所有内容存储在数据库中,因为它会进行大量写入和读取,并且您希望共享数据并且不关心在发生错误时丢失所有内容出现并且服务器重新启动...
希望我的回答能让您满意。
祝你好运