最終曎新:

RedisずMemcachedの違い — メニュヌの䞀時保存ずランキングで考える


䞀時保存ず、埗点順の操䜜を分けお考える

䞡方で蚭蚈できる䞀時保存menu:today今日のメニュヌを探すなければ元のDBから取埗結果を期限付きで保存期限 ≠ 最新デヌタずの自動同期Redisのsorted setの䟋ひよこ120・ペンギン150参加者ごずに埗点を持぀1䜍 ペンギン 150点2䜍 ひよこ 120点Memcachedなら集蚈結果を保存
キャッシュは消えたら䜜り盎せる蚭蚈が基本。Redisの氞続化やMemcachedのwarm restartも、条件を確認しお䜿いたす。
ひよこ ひよこ
お店のメニュヌ衚瀺で、毎回DBを読むのを枛らせる
ペンギン先生 ペンギン先生
よく䜿う結果を䞀時的に眮くキャッシュが候補だよ。RedisもMemcachedもメモリを䞭心にキヌず倀を扱う。たず「消えたら元のDBから䜜り盎せるか」ず「どのくらい叀くおもよいか」を考えよう。
ひよこ ひよこ
Memcachedはどう䜿うの
ペンギン先生 ペンギン先生
menu:todayのようなキヌで、メニュヌの結果を取り出す䟋がわかりやすいね。なければDBを読み、結果を期限付きで保存する。倀はアプリ偎で文字列などぞ倉換する。保存するだけで元のDBず自動同期するわけではないよ。
ひよこ ひよこ
Redisでは䜕が違う
ペンギン先生 ペンギン先生
文字列だけでなく、ハッシュ・リスト・セット・sorted setなどのデヌタ構造を操䜜できるよ。䟋えば埗点ず参加者をsorted setに入れるず、スコア順のランキングを扱えるんだ。
ひよこ ひよこ
キャッシュのメニュヌが叀くなったら
ペンギン先生 ペンギン先生
期限切れを埅぀か、倉曎時に削陀・曎新するようアプリで蚭蚈する。60秒ずいう期限なら、その間は叀い倀が返る堎合がある。圚庫や決枈など、叀い倀を蚱容できない刀断をそのたたキャッシュだけぞ任せないでね。
ひよこ ひよこ
再起動するず消えるの
ペンギン先生 ペンギン先生
Memcachedは基本的に䜜り盎せるキャッシュずしお䜿うよ。蚭定によっお正垞再起動の間に保持するwarm restartもあるけれど、䞀般的な耐久DBの保蚌ではない。RedisはRDBやAOFの氞続化を蚭定できるが、条件次第で最新の曞き蟌みが倱われるこずもあるよ。
ひよこ ひよこ
耇補すれば、倱われなくなる
ペンギン先生 ペンギン先生
Redisの通垞の耇補は非同期なので、レプリカぞ届く前の障害などを考える必芁があるよ。氞続化・耇補・バックアップは同じではない。必芁な埩旧ず倱っおよい範囲を決めお確認しよう。
ひよこ ひよこ
Redisのラむセンスも倉わった
ペンギン先生 ペンギン先生
版で違うよ。7.2以前はBSD-3-Clause、7.4系はRSALv2かSSPLv1、8以降はその2぀にAGPLv3を加えた遞択肢がある。名前だけで条件を決めず、䜿う版・補品・配垃や提䟛の圢を確認するんだ。
ひよこ ひよこ
最初はどちらを遞べばいいかな
ペンギン先生 ペンギン先生
単玔な䞀時保存なら、必芁な容量・クラむアント・既存運甚を比べよう。ランキングなどサヌバヌ偎のデヌタ構造を䜿いたいならRedisが候補。人気やスレッド数だけで速さを決めず、実際の凊理ず埩旧の条件で遞ぶよ。

メニュヌを「䞀時的なメモ」にしおおく

䜕床も衚瀺するメニュヌを、毎回DBから組み立おる代わりにキャッシュぞ眮くず、DBの負担や埅ち時間を枛らせる堎合がありたす。元の正しい情報はどこにあるかを先に決めたす。

1. menu:today をキャッシュで探す
2. あれば、その倀を䜿う
3. なければ、元のDBから取埗する
4. 結果を期限付きで保存し、衚瀺する

この流れは䞡方で蚭蚈できたす。キャッシュは期限切れ・容量䞍足による远い出し・障害などでなくなる前提で、取埗できなかったずきの凊理も䜜りたす。通信゚ラヌは「デヌタがない」ず同じではないので、元のDBぞの集䞭や゚ラヌの扱いも確認したす。

ランキングは「入れ物の操䜜」が違う

Memcachedでは、アプリで集蚈したランキングを1぀の倀ずしおキャッシュする䜿い方ができたす。Redisのsorted setなら、各参加者にスコアを持たせ、スコア順で取埗する操䜜もできたす。

䟋えばひよこ120点・ペンギン150点なら、高い順はペンギン、ひよこです。sorted setの芁玠は䞀意な文字列で、同じ名前を別の参加者に䜿えば区別できたせん。実際は参加者IDなどを蚭蚈したす。同点時の䞊びも自分の芁件に合わせたす。

芳点RedisMemcached
䞀時保存文字列などに期限を付けお䜿うキヌず倀に期限を付けお䜿う
倀ぞの操䜜耇数のデヌタ型の操䜜を利甚できるアプリで倉換した倀を保存するのが基本。カりンタヌ操䜜などもある
再起動埌RDB/AOFの蚭定ず倱われうる範囲を確認再䜜成できるキャッシュを基本に、warm restartは条件を確認
遞定の条件デヌタ型・氞続化・埩旧・䜿う版のラむセンス倀の扱い・クラむアント・容量・既存運甚

期限・氞続化・バックアップを分ける

期限は最新情報ずの自動同期ではありたせん。メニュヌを倉えたら期限切れたで埅おるのか、倉曎時に無効化するのかを決めたす。期限のない倀も、容量や蚭定によっお倱われる堎合がありたす。

RedisのRDBはある時点のスナップショット、AOFは曎新を蚘録する方匏です。曞き出しの蚭定や障害によっお、最新の曞き蟌みが倱われる可胜性がありたす。通垞の耇補も非同期で、「氞続化やレプリカを付けたから必ず安党」ずは蚀えたせん。バックアップから埩元する緎習も必芁です。

Memcachedのwarm restartは正垞な再起動でキャッシュを保持するための機胜で、起動オプションなどの条件がありたす。「再起動で絶察に消える」も「氞続DBず同じ」も、どちらも正確ではありたせん。

Redisのラむセンスは利甚する版や補品で確認したす。ここで説明する版の違いは公匏のRedisの条件で、Redis互換サヌビスすべおが同じ条件ずいう意味ではありたせん。速床の勝敗も単䞀のスレッド数や補品名からは刀断したせん。

たずキャッシュの仕組みでヒット・ミスを敎理し、DBの基本ならSQL入門ぞ。Redisの操䜜を詊すならRedis入門が次の入口です。

参考資料

2026幎10月9日確認。