たいきゅんの日記

ITエンジニアの積み上げ日記

memcachedに入門してみた

今回は、memcachedについてまとめてみようと思います。
弊社サービスでも採用されているのですが、触る機会があまりなく中身もわからなかったため今回まとめてます!
読み方は「メムキャッシュディー」と読むみたいです。間違っていたら教えてくださいmm

memcachedとは

memory cache daemonの略称になります。
分散メモリキャッシュシステムを構築することができるキャッシュサーバーになります。
メモリ上にデータを保存し、key-value-store方式でデータを保存するNoSQLに分類されるサーバーです。格納できるデータはstring型のみとなっています。

特徴

  • データの読み込み・書き込み速度が速い

メモリ上にデータを保存するためデータの読み込み・書き込み速度が速いです。メモリ上で管理するため再起動するとデータはリセットされてしまいます。そのため消えても問題ないデータを保存することに向いています。
設定した容量を超えると、利用されていないキャッシュから削除されていきます。(LastRecentlyUsed)

  • RDSの負担軽減

サーバーのメインメモリ上にファイルやデータベースの内容を一時保存して、高速に読み出すために使用されます。
またRDSと連携してクエリの実行結果を一時的に保存するために使用されたりもします。
RDSと組み合わせることでRDSの読み込み負担を軽減も期待できます。

  • マルチスレッドで動作

マルチスレッドで動作するため、CPUのコア数を上げるとパフォーマンスも上がります。

  • Redisとの比較

redisほど使えるコマンドが多くなく、シンプルかつスピード重視が特徴です。

Redisとmemcachedの比較

1. 永続化

redisはデータベースであるため、データの永続化が可能。
memcachedキャッシュであるためデータの永続化は不可能。

2. スピード

redisはデータベースであるため、スピードは重視されていない。
memcachedはキャッシュであるため、スピードが重視されている。

3. データの種類

redisはList型Set型等複雑なデータ型が使用できる。
memcachedはkey-value-store型のみとシンプルなデータ型のみ使用できる。

4. マルチスレッド対応

redisはマルチスレッド非対応。
memcachedはマルチスレッド対応。

Redis・memcached共にキャッシュを扱うためのものであるとの認識はあったものの、調べてみると特徴がそれぞれあり、同じキャッシュでも用途が異なるものであることが分かりました。
速度重視の時代なので、開発力がある程度ついたらキャッシュの知識も深めていきたいと思いました!
最後まで読んでいただきありがとうございました!