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

herokuでのmb_convert_encoding

herokuにあげたアプリを起動しようとしたらmb_convert_encodingでundefinedエラーが帰ってきました。 どうやらマルチバイトのライブラリがないエラーのようですね。 といいつつ …

no image

call_user_funcについて

call_user_funcについて。 call_user_funcはメソッドを動的に呼ぶことができるメソッドの1つで、コールバック関数を使いたいときに使われます。JavaScriptでは比較的多いと …

no image

cakeでの多対多を含んだ検索に関して

cakeを使って多対多を実現する方法はこのエントリーで紹介しました。 が、多対多を含む検索をする場合は一筋縄ではいかず結構面倒くさいです。 通常cakeで検索を行う場合、 ‘conditi …

no image

cakePHPでの直SQL

今回はCakePHPにて直のSQLを書く方法を。 cakePHPにて大概の処理はもともと備わっているコマンドでなんとかなりますが、まれに直SQLを書いたほうがらくなこともあります。 書き方その1 [c …

no image

cakePHP CSVのインポートとエクスポート

本日もcakeネタです。 CSVインポート&エクスポート CSVのインポートとエクスポートについて。 かなりいろいろなプラグインがあるようですが、一番楽なのはbehaviorを使う手法のようです。 a …