LoginSignup
76
56

More than 3 years have passed since last update.

今更ではあるが、memcachedについて学習してみた

Last updated at Posted at 2017-12-18

概要

NoSQL界隈ではRedisやCassandra、Couchbassが流行りと見受けられる。
だが、今回は業務で利用している、memcachedについて改めて学習したことをまとめていく。

memcachedとは?

memcachedとは分散型キャッシュシステムを構築することができるソフトウェアである。
kvsの方式でデータを保存することができ、メモリ上にデータを保存するNoSQL。

kvsとは?
データの保存・管理手法の一つ。
任意の値(value)に対して対応する標識(key)を設定して保存する方法。

特徴

  • メモリ上にデータを保存しているため、データの書き込み・読み込みが早い。
  • RDBと組み合わせる事で、RDBの読み込みの負担を軽減できる。
  • クライアントライブラリで分散処理を実装できる。
  • メモリ上にデータを保存しているため、memcachedの再起動を行うとデータがリセットされる。
  • 設定した容量を超えると利用されないキャッシュから順番に消える(LRU)。
LRUとは?
未使用の時間が最も低いものを判定するアルゴリズム

分散処理について

memcachedはクライアントライブラリで分散処理を実装することが出来る。
PHPのライブラリ(Memcache)では、分散処理はキーごとにサーバを使い分けることで実現している。
呼び出しも同様のアルゴリズムとなっているので、保存したmemcachedを参照する。

分散処理の例

PHPのクライアントライブラリ

Memcache

特徴

  • PHP4.3.3以上で使用可能
  • インストール時に他のライブラリに依存しない

Memcached

特徴

  • PHP5.2.0以上で使用可能
  • インストール時にlibmemcachedモジュールが必要
  • memcacheより利用できるメソッドが多いらしい

導入

memcached

導入方法はソースでのインストールやyumでのインストールがある。

今回はyumでのインストールを行う。

yum install -y memcached

PHPライブラリ

PHPライブラリも同様にyumでインストールできる。
サーバのPHPバージョンに合わせること。
今回は動作確認のためにmemcacheとmemcachedの両方をインストールするが、実際に使う際はどちらか一つで問題ない。

yum install -y php72-php-pecl-memcache
yum install -y php72-php-pecl-memcached

あとは他のextensionと同様にphp.iniに追加する。

extension=memcache.so
extension=memcached.so

これで動くはずだったが、下記のWarningが発生した。

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/memcached.so' - /usr/lib64/php/modules/memcached.so: undefined symbol: memcached_touch in Unknown on line 0

こちらを参考に対応し、正常に動作するようになった。

速度比較

PHPライブラリの読み込みと書き込みの速度を比較してみる。
実行結果を見ると僅かな差で Memcachedが勝っているようにみえる。

ライブラリ名 書き込み 読み込み
Memcache 0m23.270s 0m21.703s
Memcached 0m19.938s 0m19.213s

ソースコードはこちら

参考資料

PHPのMemcachedモジュールをインストール
http://takashi-kun.hatenablog.com/entry/2013/11/23/031343

76
56
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
76
56