Web アプリケーションがますます複雑になるにつれて、パフォーマンスが重要な問題になっています。多くのアプリケーションにおいて、データベース クエリは最も時間のかかる操作の 1 つです。データベースからデータを頻繁に読み取ることを避けるために、キャッシュ システムを使用して、頻繁に読み取られるデータをメモリに保存し、すぐにアクセスできるようにすることができます。 PHP 開発では分散キャッシュに Memcached を使用することが非常に一般的ですが、この記事では分散キャッシュに Memcached を使用する方法を紹介します。
Memcached は、キャッシュされたデータを複数のサーバー間で共有できる高性能分散メモリ キャッシュ システムです。より具体的には、Memcached はデータをメモリに保存するキー/値キャッシュ システムです。これにより、開発者は、HTML ページ、データベース クエリの結果、さらには完全な Web アプリケーションを含む、アプリケーション内のあらゆる種類のデータをキャッシュできるようになります。
Memcached を使用する前に、まず Memcached をインストールする必要があります。 Linux システムでは、次のコマンドを使用してインストールできます:
sudo apt-get install memcached sudo apt-get install php-memcached
インストールが完了したら、Memcached サービスを開始する必要があります。このサービスは次のコマンドで開始できます:
sudo service memcached start
次に、PHP 拡張モジュールで Memcached を構成する必要があります。 Ubuntu システムでは、これは次のファイルを編集することで構成できます:
sudo vi /etc/php/7.0/mods-available/memcached.ini
次の内容をファイルに追加します:
extension=memcached.so
ファイルを保存して閉じ、Apache サーバーを再起動します:
sudo service apache2 restart
これで、Memcached のインストールと構成が正常に完了しました。
次に、分散キャッシュに Memcached を使用する方法を示します。まず、Memcached インスタンスを作成する必要があります。次のコードを使用できます。
$mc = new Memcached(); $mc->addServer("127.0.0.1", 11211); // 添加一个Memcached服务器
上記のコードでは、Memcached インスタンスを作成し、Memcached サーバーを追加します。 addServer() 関数の最初のパラメータは Memcached サーバーの IP アドレス、2 番目のパラメータはポート番号 (デフォルトは 11211) です。
次に、データベース クエリ結果を Memcached にキャッシュする具体的な例を見てみましょう。ユーザー ID をパラメーターとして受け取り、ユーザーの情報を返す関数 fetchUserById() を定義したと仮定します。これを実現するコードは次のとおりです:
function fetchUserById($uid) { // 检查缓存中是否存在该用户信息 $mc = new Memcached(); $mc->addServer("127.0.0.1", 11211); $key = "user_".$uid; $data = $mc->get($key); if (!$data) { // 如果缓存中不存在该用户信息,则从数据库中查询 $pdo = new PDO("mysql:host=127.0.0.1;dbname=mydb","root",""); $stmt = $pdo->prepare("SELECT * FROM users WHERE id=:id"); $stmt->bindParam(":id", $uid); $stmt->execute(); $data = $stmt->fetch(PDO::FETCH_ASSOC); // 将查询结果缓存到Memcached中 $mc->set($key, $data, 3600); } return $data; }
上記のコードでは、ユーザー ID を Memcached キャッシュのキー名として使用し、キー名がキャッシュに存在する場合は、キャッシュされたデータが直接返されます。 。それ以外の場合は、データベースからデータをクエリし、クエリ結果を Memcached に保存して、次のクエリをキャッシュから読み取れるようにします。
実際のアプリケーションでは、Memcached はページ キャッシュ、セッション データ キャッシュなど、他にも多くの用途があります。 Memcached を使用すると、Web アプリケーションの速度とパフォーマンスが大幅に向上しますが、同時に、キャッシュの更新、キャッシュの無効化、キャッシュの侵入など、より多くの問題を考慮する必要があります。したがって、分散キャッシュに Memcached を使用する場合は、効率を向上させるためにその実装プロセスとアプリケーション シナリオを考慮する必要があります。
以上がPHP 開発で分散キャッシュに Memcache を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。