Redis本で学ぶキャッシュ設計とTTL・データ構造の実務

PR:この記事にはアフィリエイトリンクが含まれます。

Redisを入れてもデータベース負荷が下がらない。更新後に古い値が残る。こうしたキャッシュの問題はTTLに限らず、キーの粒度やメモリ管理にも関わっています。

期限の揃ったキーは同時の再取得を招き、データに合わない型は読み書きの手数を増やします。書籍の内容と合わせて、実務で見る点を整理します。

Redis本の早見表

4冊の扱う範囲を先に並べました。基礎から運用までを追う本、Redis 3.Xや4.0.1を例にする本、レシピ集、Redis Stackの設計書と、それぞれ焦点が異なります。

書籍主な対象実務テーマ
実践Redis入門 技術の仕組みから現場の活用まで実践Redis入門 技術の仕組みから現場の活用までRedis全般TTL、退避、サイジング、監視
Redis EssentialsRedis EssentialsRedis 3.X基本データ型、TTLコマンド、Cluster
Redis 4.x CookbookRedis 4.x CookbookRedis 4.0.180超のレシピ、キャッシュ、運用
Redis Stack for Application ModernizationRedis Stack for Application ModernizationRedis Stack Server 7.2以降JSON、ベクトル、検索、時系列

『実践Redis入門』の希望小売価格は3,696円(税込)です。実売価格は時期や販売店で変わるため、購入時に表示を確かめてください。480ページあり、基礎からトラブルシューティングまで扱います。

Redis Essentialsは3.X、Redis 4.x Cookbookは4.0.1が軸です。現行環境へコードを移す際は、掲載コマンドが利用中のRedisに対応するか確認しましょう。版の違いは実装前に押さえたいところです。

キャッシュと正本

Redisをキャッシュに使う場合は、正本を先に決めます。多くのWebシステムではデータベースが正本で、Redisの値は消えても作り直せる複製です。ここが曖昧だと、障害時の復旧や退避の方針まで決められません。

一般的なキャッシュ・アサイドは、Redisを読み、キーがなければデータベースから取得してRedisへ保存します。応答は速くなる一方、期限切れ直後はミスが増え、データベースへ読み込みが集中しがちですよね。

更新時はデータベースへの書き込みが確定してから、該当キーを削除する方法が扱いやすいです。ただし、同時に進んだ古い読み込みが、削除のあとで値を書き戻す競合もあります。更新頻度が高いキーでは、世代番号や再取得の制御まで見ておきましょう。

データによって必要な鮮度は違います。商品説明なら数分のずれを許せても、在庫や権限判定は同じ扱いにできません。Redisから消えてもデータベースから復旧できる値をキャッシュし、許容できる古さを決めます。ここが運用の基準です。

TTLが担う鮮度

TTLはキーを残す時間の上限です。EXPIRE key 300なら300秒、PEXPIRE key 300000なら300,000ミリ秒を指定します。後者は5分。単位を誤ると意図しない長期保存や再取得の増加につながります。

残り時間を返すのはTTL keyとPTTL keyで、単位はそれぞれ秒とミリ秒です。期限のないキーは-1、存在しないキーは-2。PERSIST keyを実行すれば期限が外れるため、調査時にはキーの有無も確かめてください。

値と期限は、SET cache-product-123 '{"name":"茶葉"}' EX 300のようにまとめて設定できます。SETとEXPIREを別の処理にすると、その間に処理が止まり、期限のないキーだけ残ることもあります。

TTLの長さは鮮度と再生成コストの折り合いです。短ければ古い値を減らせますが、読み直しが増えます。長くすれば負荷を抑えやすい反面、更新後の値が古いまま残る時間も延びます。全キーを同じ秒数にする必要はありません。

Redisのデータ構造

Stringは短い値や数値、JSONなどを一つのキーに保存する基本形です。外部DBの行を丸ごとシリアライズする場合に扱いやすい一方、一項目だけ変えたい場面では値全体の読み書きが必要です。TTLもキー単位で管理します。

Hashは一つのキーに複数のフィールドを持たせられます。ユーザー情報や商品属性のように、項目を分けて扱うデータと相性がよく、JSON文字列全体を毎回書き換えずに済みます。キーの粒度と一件あたりの大きさも見ておきましょう。

Setは重複を避けた集合や所属確認に、Sorted Setはスコア順のランキングや時刻順の一覧に使えます。処理に合う型なら、アプリ側で全件を読み込んで並べ替える手間を減らせます。保存形式と取り出し方は一緒に考えるとよいでしょう。

Listは順序付きの値、Streamsはイベントの追記と消費に使えます。Bitmapは多数の真偽値、HyperLogLogはユニーク数の概算、地理空間インデックスは位置検索を扱います。何でもStringへ詰め込まず、必要な操作に合わせて型を選びます。

期限切れの偏り

大量のキーが同じ時刻に期限切れになると、再生成の要求も一斉に来ます。全キーに300秒を設定した場合、同じタイミングで保存した値は、同時刻に期限を迎えることがあります。

TTLに少し乱数を加えるジッターは、失効時刻を分散させる手軽な方法です。基準を300秒にするなら、キーごとに数十秒の幅を持たせる設計が考えられます。鮮度の要件を超えない範囲で調整してください。

アクセスが集中するキーでは、再生成中だけ古い値を返す方法や、再取得を一件にまとめる制御も使えます。分散ロックを設けるなら、ロック切れや再取得失敗のあとに処理が詰まらないよう、復旧経路も用意しましょう。

存在しないデータへの問い合わせが続く場合は、不在の結果にも短いTTLを付けられます。ただし新規登録後も古い結果が残るため、期限を短くし、更新時の無効化と組み合わせます。

メモリ管理と退避

TTLを付けてもメモリの上限は決まりません。キーの数や値の大きさによっては、期限前に容量へ達します。Redisのmaxmemoryと退避ポリシーを設定し、実際にどう動くか確かめておきましょう。

allkeys-lruは全キーから最近使われていないキーを退避し、volatile-ttlは期限のあるキーを対象にします。期限なしのデータが混在すると、ポリシーごとに残るキーが変わります。名前だけで決めず、実データで挙動を見てください。

noevictionでは上限に達すると書き込みが失敗します。読み込みは続けられても、キャッシュの更新は止まります。アプリが失敗をどう処理するか、データベースへ退避するのか、応答を返せるのかを決めておく必要があります。

監視では使用メモリに加えて、evicted_keys、expired_keys、ヒット率、レイテンシー、データベース負荷も確認します。値の実サイズやレプリカ、メモリ断片化の余裕を含めて見積もると、キー数と平均サイズだけの計算より現実に近づきます。

実践Redis入門

技術評論社の『実践Redis入門 技術の仕組みから現場の活用まで』は2022年刊、480ページです。String、List、Hash、Set、Sorted Setに加え、Bitmap、地理空間、HyperLogLog、Streamsまで、日本語で各型を学べます。

キャッシュアーキテクチャやアンチパターン、TTL、退避ポリシー、ノードのサイジングを扱います。さらに永続化、レプリケーション、Redis Cluster、監視、メモリ管理、トラブルシューティングまで範囲が広がります。

Redisの基礎から運用までまとめて学ぶ人に合います。目次にはRedis Functionsやクライアントサイドキャッシュも含まれています。TTLを設定する方法に加え、キャッシュの前後にある運用を押さえられる構成です。

実践Redis入門 技術の仕組みから現場の活用まで

実践Redis入門 技術の仕組みから現場の活用まで

技術評論社

Amazonで見る

Essentials

『Redis Essentials』は2015年刊、230ページです。Redis 3.Xを対象に、StringやHashなどの基本型から扱います。Redisを学び始める人が、基本の用語やコマンドを確認できます。

EXPIRE、EXPIREAT、TTL、PTTL、PERSIST、SETEXも取り上げています。秒単位で期限を付ける方法、時刻を指定する方法、残り時間の確認まで、コマンドごとの役割をたどれます。

メモリ管理、永続化、Cluster、Sentinelも範囲に含まれます。ただし前提はRedis 3.Xです。掲載手順をそのまま現行環境へ適用せず、基本概念を押さえたうえで、利用中の環境に合わせてください。

Redis Essentials

Redis Essentials

Packt Publishing

Amazonで見る

4.x Cookbook

『Redis 4.x Cookbook』は2018年刊、382ページです。Redis 4.0.1を例に80超のレシピを掲載し、Redisの基礎を知る開発者、管理者、アーキテクトを対象にしています。

キーの期限やキャッシュ、データ型とAPIに加え、永続化、レプリケーション、Cluster、メモリポリシー、監視、ベンチマークも扱います。必要なテーマから手順を参照しやすいレシピ形式です。

Redis 4系の挙動を具体例で調べたい人に役立ちます。現行環境との差を確かめずに手順をコピーするのは避けましょう。運用テーマを個別に確認する資料として使えます。

Redis 4.x Cookbook

Redis 4.x Cookbook

Packt Publishing

Amazonで見る

Stackの設計

『Redis Stack for Application Modernization』は2023年刊、336ページです。Redis Stack Server 7.2以降を前提に、HashやJSON、ベクトル、時系列、確率的データ構造、検索とインデックスを扱います。

中心となるのはアプリケーション設計です。データモデリングや検索、ストリーム処理に加え、マイクロサービス、スケーラビリティ、高可用性、セキュリティ、RedisInsightまで取り上げます。

Redis Stackでリアルタイムのマルチモデルアプリを構築・運用する人に合います。通常のキャッシュ設計を一から学ぶ本とは扱う範囲が異なり、ベクトル検索やJSONなどStack固有の機能を使う現場で役立ちます。

Redis Stack for Application Modernization

Redis Stack for Application Modernization

Packt Publishing

Amazonで見る

結論

Redisのキャッシュ設計で押さえたいのは、正本との境界、値ごとの鮮度、失効後の負荷、メモリ上限です。TTLを一律に設定しても、古い値や同時失効、容量超過は防げません。運用を左右する要点です。

一冊だけ買うなら、日本語でデータ型からTTL、退避、監視まで学べる『実践Redis入門』がおすすめです。希望小売価格は3,696円(税込)。実売価格は時期や販売店によって変わります。

具体的な運用例を参照するなら『Redis 4.x Cookbook』、Redis Stackでアプリを作るなら『Redis Stack for Application Modernization』が目的に合います。版が異なる本は、概念の学習とコマンドの実装確認を分けて活用してください。

【2026年版】Amazonで買えるおすすめノートPCランキング!コスパ最強のモデルはこれだ
DELLのノートパソコンがテーブルの上に置いてある画像

Amazon の PC をスコア化してみた

Specsy Hub

Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。

タイトルとURLをコピーしました