提高Web应用程序的性能以及memcached
程序员文章站
2022-05-23 17:20:18
...
跳至
当我们想到存储在Web应用程序中,我们首先想到的通常是一个传统的数据库MySQL。这是伟大的长期存储和数据分析,但有许多短期需要一个更好的选择:memcached。这是页面请求和提高性能之间的信息存储位一个不错的选择。本文介绍我们会告诉你如何开始使用memcached PHP。 介绍 memcached是一个简单的界面让你店里的东西在存储服务器。这可以在同一台机器上运行作为Web服务器的可扩展性,但来自分布在多个服务器实例。所有你需要的是Memcached在后台运行,PHP提供了一个简单的界面和一个PECL的图书馆。基于Debian的Linux系统,这很容易: $ sudo apt-get install memcached $ sudo service memcached start $ sudo pecl install memcached $ sudo service httpd restart 复制代码 现在我们要提到有技术上的两个PHP库使用memcached。老图书馆被称为“set”和缺乏某些功能。新的“缓存”图书馆使用libmemcached和一般是首选。 PHP中的第一步是连接到服务器。连接可以持续跨越的要求,这是很好的性能。然后添加到服务器列表的需要。在这种情况下,我们将使用一个本地运行实例的默认端口: function get_memcached() { // Set a persistent connection ID $mc = new Memcached('webapp'); // Set a short timeout (in milliseconds) so if the server goes down // it doesn't take down our site with it $mc->setOption(Memcached::OPT_CONNECT_TIMEOUT, 1000); if ( !$mc->getServerList() ) { if ( !$mc->addServer('localhost', 11211) ) { error_log('Could not add memcached server.'); return false; } } return $mc; } 复制代码 现在你可以读写PHP变量与基于密钥的memcached你定义简单的功能。他们将序列化和反序列化,自动。你可以不喜欢写数据库连接或结果集的资源,但你可以将这些结果集阵列和存储这些。 数据存储 让我们说我们想存储列表的最近访问的URL的每个登录的用户。我们可以使用会话,但不工作的设备和它会尽快清除会话是消失。我们可以使用一个数据库,但这种数据的最可能我们的系统没有临界慢。使用memcached是容易的: $user_id = 123; // The current user's ID复制代码 缓存 现在让我们通过缓存数据库结果真正提高您的Web应用程序。数据库查询通常是在服务器处理的最大瓶颈,从而避免重复查询在内存中缓存的结果可以提供巨大的性能增益。最简单的方法是查询只和主键的商店。通常最好是缓存的值被删除时,数据库的记录被更新,用户不会看到任何过时的价值观。 function store_product($id, $name, $price) { // Create or update the product in the database $db = get_db(); $qry = $db->prepare('REPLACE INTO product (id, name, price) VALUES (:id, :name, :price)'); $qry->bindParam(':id', $id); $qry->bindParam(':name', $name); $qry->bindParam(':price', $price); $qry->execute();复制代码 注意事项 与任何技术选择有局限性和注意事项: 一个关键的最大长度是250个字节。把你的钥匙简短。 默认的最大值的大小为1MB。这不是正确的地方来存储大的值。 仓储不是锁定阅读或在数据库中的记录可以被锁定的写作方式。要知道,任何Web请求可以在任何时间更新任何价值。 确保您有足够的RAM memcached服务器合并。 下一步 你能越做memcached: 缓存的值可以超时。这是有用的数据时,应该被缓存一段时间而不是手工删除。 简单的递增和递减的方法有利于保持快速柜台之间的请求。 memcached配置正确,你可以分享许多编程语言编写的应用程序之间的数据。 给memcached一试。在合适的情况下这是一个非常简单而有效的最大化你的Web应用程序性能的解决方案。