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

linuxでのherokuのインストール&パスの通し方

linuxでのherokuのインストールやパスの通し方について 原則としてruby入ってないとダメっぽいです。(しかもruby1.8系だと2016年6月現在エラーが出ますので最新バージョンをインストー …

no image

cakeでのトランザクション、コミット、ロールバック

cakePHP(2.X系)でのトランザクション、コミット、ロールバックについて。 cakePHPでトランザクションを書ける場合、Model内に [crayon-5b4f02620d56d7760633 …

no image

自力での監視

Zabbixの勉強を進めていますが、マニュアル通りに設定していて、中で何をやっているかをあまり理解していなかったりします。 それだとちょっとまずいのでZabbixでの構築とともに自力での監視スクリプト …

no image

yumのリポジトリについて

CentOSでは様々なパッケージが用意されていますが、標準で使えるもの以外にもさまざまなリポジトリがあります。 Contents1 リポジトリ一覧2 有効、無効や指定してのインストールについて リポジ …

no image

シェルの基礎+ユーザー切り替え関連

雑誌を見ていたらシェルの特集があったので、ちょっとメモリます。 補強したいところのみ要点をチェック。 Contents0.1 実行パスについて0.2 ビルドインコマンド0.3 シェル変数・環境変数0. …