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

障害調査フロー

実務でサーバーの障害が発生した時のフローなどをメモしおこうかと。 行ってしまうと「ログに始まり、ログにおわる」といった感じでしょうか。 サーバーエンジニアの方の作業をみてたんですが、基本的にはプログラ …

no image

Linuxコマンドでのテキスト整形 CSV系の処理など

以前、対テキストファイル系のLinuxコマンドの使い方を紹介しましたが、その関連エントリーを。 今回やるのはCSV系の処理ですね。 id name age 1  suzuki 35 2  tanaka …

no image

サービスプロバイダとは

Laravelをやっていて、次に分かり難かった概念、サービスプロバイダについて。 アプリケーション開発にはデータベース、ファイル操作、ログ操作など様々な操作があり、個別のビジネス処理以外で共通化できる …

no image

シェルスクリプトでのsshログインとメール送信

久々にシェルスクリプトをやったんでその復習を。 応用範囲は結構広そうです。 Contents1 ファイルの読みこみ方2 関数の定義、使い方3 SSHログイン4 ssh鍵認証つきのログイン5 メール送信 …

no image

CakePHPのcomponent

CakePHPのComponentについて。 CakePHPでは各コントローラに共通の処理をComponentとしてモジュール化することができます。 わかりやすいところでいえば認証のAuth,Sess …