PR:この記事にはアフィリエイトリンクが含まれます。
Redisを入れてもデータベース負荷が下がらない。更新後に古い値が残る。こうしたキャッシュの問題はTTLに限らず、キーの粒度やメモリ管理にも関わっています。
期限の揃ったキーは同時の再取得を招き、データに合わない型は読み書きの手数を増やします。書籍の内容と合わせて、実務で見る点を整理します。
Redis本の早見表
4冊の扱う範囲を先に並べました。基礎から運用までを追う本、Redis 3.Xや4.0.1を例にする本、レシピ集、Redis Stackの設計書と、それぞれ焦点が異なります。
| 書籍 | 主な対象 | 実務テーマ |
|---|---|---|
実践Redis入門 技術の仕組みから現場の活用まで | Redis全般 | TTL、退避、サイジング、監視 |
Redis Essentials | Redis 3.X | 基本データ型、TTLコマンド、Cluster |
Redis 4.x Cookbook | Redis 4.0.1 | 80超のレシピ、キャッシュ、運用 |
Redis Stack for Application Modernization | Redis 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を設定する方法に加え、キャッシュの前後にある運用を押さえられる構成です。
Essentials
『Redis Essentials』は2015年刊、230ページです。Redis 3.Xを対象に、StringやHashなどの基本型から扱います。Redisを学び始める人が、基本の用語やコマンドを確認できます。
EXPIRE、EXPIREAT、TTL、PTTL、PERSIST、SETEXも取り上げています。秒単位で期限を付ける方法、時刻を指定する方法、残り時間の確認まで、コマンドごとの役割をたどれます。
メモリ管理、永続化、Cluster、Sentinelも範囲に含まれます。ただし前提はRedis 3.Xです。掲載手順をそのまま現行環境へ適用せず、基本概念を押さえたうえで、利用中の環境に合わせてください。
4.x Cookbook
『Redis 4.x Cookbook』は2018年刊、382ページです。Redis 4.0.1を例に80超のレシピを掲載し、Redisの基礎を知る開発者、管理者、アーキテクトを対象にしています。
キーの期限やキャッシュ、データ型とAPIに加え、永続化、レプリケーション、Cluster、メモリポリシー、監視、ベンチマークも扱います。必要なテーマから手順を参照しやすいレシピ形式です。
Redis 4系の挙動を具体例で調べたい人に役立ちます。現行環境との差を確かめずに手順をコピーするのは避けましょう。運用テーマを個別に確認する資料として使えます。
Stackの設計
『Redis Stack for Application Modernization』は2023年刊、336ページです。Redis Stack Server 7.2以降を前提に、HashやJSON、ベクトル、時系列、確率的データ構造、検索とインデックスを扱います。
中心となるのはアプリケーション設計です。データモデリングや検索、ストリーム処理に加え、マイクロサービス、スケーラビリティ、高可用性、セキュリティ、RedisInsightまで取り上げます。
Redis Stackでリアルタイムのマルチモデルアプリを構築・運用する人に合います。通常のキャッシュ設計を一から学ぶ本とは扱う範囲が異なり、ベクトル検索やJSONなどStack固有の機能を使う現場で役立ちます。
結論
Redisのキャッシュ設計で押さえたいのは、正本との境界、値ごとの鮮度、失効後の負荷、メモリ上限です。TTLを一律に設定しても、古い値や同時失効、容量超過は防げません。運用を左右する要点です。
一冊だけ買うなら、日本語でデータ型からTTL、退避、監視まで学べる『実践Redis入門』がおすすめです。希望小売価格は3,696円(税込)。実売価格は時期や販売店によって変わります。
具体的な運用例を参照するなら『Redis 4.x Cookbook』、Redis Stackでアプリを作るなら『Redis Stack for Application Modernization』が目的に合います。版が異なる本は、概念の学習とコマンドの実装確認を分けて活用してください。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。





