skillup

技術ブログ

PHP サーバー・ネットワーク

キャッシュについて(主にmemcachedを中心に)

投稿日:2017年4月24日 更新日:

Webサービスのパフォーマンス向上で目に見えて効果があることの一つがDBへのアクセス回数を減らすことです。

それはSQLを発行する回数を少なくするなど、普段からのプログラムの書き方ももちろん大事なのですが、キャッシュを使うのも大切な方法の1つです。

キャッシュの種類

キャッシュと一口に言っても以下のように様々な種類があります。

static変数

  • PHPディフォで使えるstatic変数
  • 何度も呼び出されるけど同じ関数、メソッドないで返り値をあらかじめキャッシュして無駄な計算を減らす

APC

  • スピードはかなり高い
  • メモリへの負荷が高い
  • 静的データのキャッシュに向いている
  • 最速なので速度が求められ、apacheの再起動が起こってキャッシュがクリアされても問題ない部分。

Memcached

  • memcachedというサーバー自体を別に立てます。memcached自体がメモリにデータをキャッシュするため、スピードは劣りますが、サーバー全体で値を共有することができます。(これがネックになってしまうこともあります。)

注意点

  • DBとのデータとの整合性。
  • UPDATE/DELETE時にキャッシュも更新、削除を行うこと。

キャッシュのまとめ

過負荷に耐えるWEBサービス作成のための使えるPHPキャッシュテクニックまとめ
PHP独自Frameworkでのキャッシュについてまとめ

Memcachedに関して

実務で使っているので、ちょっと特集。

インストール(centOS6系 / php5.6 です)

注意点としてmemcachedとmemcaheは違うもののようです。dがついているほうが後発でかつ機能も多いようです。

インストール自体はなかなか手こずりました・・

下記のようなライブラリの依存エラーが出ることもありました。

ライブラリが足りてないようなので、下記の要領でインストールし、もう一度php-pecl-memcachedをインストールして解決です。

PHP5.6からmemcachedに接続してみる

CentOS7はこちら

CentOS 7にMemcached最新版をインストールしてPHPと連携する

プログラムでの活用

ディレクターなら知っておきたいキャッシュサーバ「memcached」の基礎知識【PHP編】

ちなみにmemcachedの場合キャッシュされたデータをdumpしてみることができます。

memcached の中身を確認するなら memcached-tool コマンド

CakeでももちろんMemcachedはサポートしています。簡単なんですぐに取り込めます。

https://book.cakephp.org/3.0/en/core-libraries/caching.html

-PHP, サーバー・ネットワーク
-,

執筆者:


  1. […] キャッシュについて(主にmemcachedを中心に) […]

comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

vimの小ネタ(主にテキスト置換系に関して)

前回に引き続き、またまたvimの小ネタなど Contents1 マクロ2 単純な置換3 改行系の置換4 一括置換 マクロ エディタ上である動作を記録させておきたい場合、q+任意の文字(例えばa)+任意 …

no image

jenkinsでのSSH鍵認証&herokuからのソース取得

jenkinsでGitからソースを取得するときに鍵認証をかけている場合はそれ用の設定が必要になります。 基本的な考え方ですが、userがjenkinsだったときに、ssh鍵認証やherokuでどのよう …

no image

phpenv5.3+php-fpm

レガシーなプロジェクトではいまだにPHP5.3なんかを使うケースがあったりします。 これがCentOS6だったらyumでphp5.3とかだったらいいんですが、サーバーはCentOS7だったりするとなか …

no image

nginxのデバッグ

今までいろいろと苦しめられてきた(汗)nginxのデバッグについて。 まず任意の文字や変数をログに出すことができます。 Contents1 変数の出力1.1 rewriteデバッグ2 小ネタ 変数の出 …

no image

jQuery modalダイアログについて&重複時間処理

Contents1 jqueryモーダルダイアログ1.1 あらかじめ読み込むライブラリ1.2 ソース本体1.2.1 Html側1.2.2 Javascript側1.2.3 参考リンク2 重複時間につい …

アーカイブ