Redis と Memcached を比べてみた

以前、Amazon linux 2 で Extras Library から Redis をインストールしてみました。

他にも有名どころでは、Memcached があり、どちらもインメモリデータストアとして人気があるようです。
個人的には10年以上前から、Redis を利用していたので、こちらはなじみがあるのですが、Memcached は利用したことがなかったので、両方インストールして比べてみました。

まず、表面的な比較は、AWS さんのサイトが非常にわかりやすいです。

AWS では、ElastiCache というマネージドサービスを提供していて、安価で簡単に利用できます。

今回は、T4g インスタンスの Amazon Linux 2 に、Extras Library からインストールしてみました。同一インスタンス上の PHP などから、socket (UNIXドメインソケット) 通信する想定で試します。
※各バージョンなどは 2022/12/20 現在

Redis をインストール

手順は以前の投稿と変わりません。Extras Library で redis6 を有効にして、インストールします。

インストール時のメッセージは以下の通り。

ダウンロードサイズが 1.1 M 、インストールサイズは 3.8 M でした。
yum info コマンドで確認すると以下のように表示されます。


設定ファイルは、 /etc/redis/redis.conf となります。
変更箇所は以下の3か所で、TCP の listen を止めて、socket通信するようにします。

ここで、前回つまずいたのですが、元のコメントでは「unixsocket /run/redis.sock」なのですが、そのままコメントを外しても動きませんでした。「unixsocket /run/redis/redis.sock」に修正しています。
systemctl コマンドで、start してプロセスが起動できることを確認したら、enable で自動起動を有効にします。

ちなみに、起動スクリプトは /usr/lib/systemd/system/ 以下に格納されていて、enable すると、/etc/systemd/system/ にリンクが作成され、disable するとリンクが削除されます。
Redis の起動スクリプトの内容は以下のようになっていました。

/usr/lib/systemd/system/redis.service

RuntimeDirectory と RuntimeDirectoryMode が指定されているので、OS起動時に /run/redis が作成され、オーナーが redis 、パーミッションは 0755 で作成されます。
起動直後のメモリ使用状況はこんな感じ。

Memcached をインストール

同様に Extras Library で、memcached1.5 を有効にしてインストールします。

インストール時のメッセージは以下の通り。

ダウンロードサイズが 131 k 、インストールサイズは 309 k でした。Redis よりも圧倒的に小さいです。Redis は機能がリッチなのに対して、Memcache はシンプルな感じ。
yum info コマンドで確認すると以下のように表示されます。

説明もシンプル。ハイパフォーマンスとうたわれています。
設定ファイルは、 /etc/sysconfig/memcached となります。
元の設定を書き換え、TCP の listen を止めて、socket通信するようにします。

同時接続数やキャッシュサイズは小さくしました。
Memcached の起動スクリプトの内容は以下のようになっていました。

/usr/lib/systemd/system/memcached.service

こちらは、RuntimeDirectory と RuntimeDirectoryMode が指定されていないので、以下のファイルを作成して、起動時にテンポラリディレクトリを作成するように指定します。

vi /usr/lib/tmpfiles.d/memcached.conf 

記載内容は次の1行のみ。

ちなみに、/var/run は /run へのリンクとなっていました。
OS を reboot して、上記で設定した内容でテンポラリディレクトリが作成されていることを確認したら、systemctl コマンドで、start してプロセスが起動できることを確認し、enable で自動起動を有効にします。

起動直後のメモリ使用状況はこんな感じ。

AWS の比較表を見ると、Redis のほうができることがたくさんあるけど、インストールサイズや起動時のメモリ使用量が多くなりそう。

 MemcachedRedis
ミリ秒未満のレイテンシー
開発者の使いやすさ
データのパーティション
幅広いプログラミング言語のサポート
柔軟なデータ構造
マルチスレッドアーキテクチャ
スナップショット
レプリケーション
トランザクション
Pub/Sub
Lua スクリプト
地理空間のサポート


個人のブログでキャッシュするくらいなら、Memcached でいいのかも。
どちらを選ぶかは、用途や好みでよさそうです。

コメントを残す

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

PAGE TOP