skillup

技術ブログ

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

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

投稿日:

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

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

キャッシュの種類

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

static変数

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

APC

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

Memcached

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

注意点

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

キャッシュのまとめ

http://phpspot.org/blog/archives/2011/03/webphp_1.html
http://qiita.com/dorarep/items/e29053138c1504f004f1

Memcachedに関して

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

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

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

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

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

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

http://qiita.com/toshihirock/items/f8436358650e24789677

CentOS7はこちら

http://www.hack-log.net/entry/2015/05/17/100000

プログラムでの活用

https://liginc.co.jp/web/programming/php/178772

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

 http://bashalog.c-brains.jp/10/07/30-105035.php

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

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

 

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

執筆者:


comment

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

関連記事

no image

基本的なSSHの設定

一般的なサーバーのSSH対策に関して。素のままでいるとあっという間に不正アクセスの餌食になります。 ちなみにサーバーとしてSSHの設定をいじる場合は/etc/ssh/sshd_confになります。ss …

no image

PHPにおけるstaticキャッシュ

PHPにおけるstaticキャッシュに関して。 PHPのおけるキャッシュはいくつかありまして、一般的にはmemcachedなどのKVS方式のキャッシュサーバーなどを使う方法が一般的かと思います。 キャ …

no image

zabbixについて 

現在、携わっているプロジェクトでサーバー監視をする必要性がでてきたので、監視ツールについていろいろ調べとります。 Contents1 サーバー監視とは2 サーバー監視ツールとは3 おおまかなイメージ4 …

no image

サーバー設定ファイルについて fastcgi周り

前回nginxの設定を書きましたが、今回はFastCGIについてメモ。 Contents1 そもそもCGIとは?2 CGIのデメリット3 FastCGIとは?4 ソース5 参考リンク そもそもCGIと …

no image

vagrantでサーバーの状態を保存(snapshot)

上司がAnsible(構成管理ツール)のサンプルをくれたのですが、試そうにもまっさらなサーバーを用意しないといけません。 サーバー環境を新規に契約するのは面倒なのでvagrantで当然考えています。 …