Redis(レディス)は、データをメモリ上に置き、文字列・ハッシュ・リスト・ソート済みセットといったデータ構造ごとの操作で読み書きするデータストアです。キャッシュ、セッション、ランキング、ジョブキューの置き場として広く使われています。この記事では、公式ドキュメントとGitHubのリリース情報をもとに、Redisの仕組みとデータ型、2026年10月時点で8.10系まで進んだ版の変化とライセンスの変遷が、この記事で整理する内容です。そのうえで、DockerでRedis 8のJSONとVector Setsを動かすコマンド、SentinelとClusterの構成、採用する条件と見送る場面を示します。
まとめ:Redisはメモリ上のデータ構造を高速に扱う道具でRDBの代わりではない
Redisは、データ全体をメモリに載せる代わりに、読み書きの速さとデータ構造ごとの原子的な操作を得る設計です。ディスクへの保存はRDBとAOFで行えますが、主役はあくまでメモリ上のデータです。
2026年10月時点の最新は8.10系で、8.0からはAGPLv3を含む3つのライセンスから選べます。JSONや時系列、ベクトル検索用のVector Setsも本体に入りました。
採用してよいのは、キャッシュやセッションのように失っても作り直せるデータか、メモリに収まる量の補助データです。業務の正本はRDBに残し、Redisはその前段に置く構成を基本にします。
Redisの仕組みを名前の由来・データ型・メモリ使用量の目安から理解する
まず、Redisがどういう前提で作られた製品なのかを公式の記述で押さえます。KVS全般との違いや基本コマンドの動きはKVS(キーバリューストア)とは:Redisで動かして分かる仕組みとRDBとの使い分けで扱っているため、ここではRedis固有の点に絞ります。
REmote DIctionary Serverの略という由来と「レディス」という読み方
Redis FAQによると、名前はREmote DIctionary Serverの頭字語です。発音は「red」に「kiss」からkを抜いた音を足したもので、日本語では「レディス」と表記されることが多い製品です。
作者はSalvatore Sanfilippo(antirez)氏で、もとはリアルタイムのログ解析ツールLLOOGGを拡張するために作り、その後オープンソースとして公開しました。現在の開発元はRedis Ltd.です。
文字列からVector Setsまで、Redisが持つデータ型と原子的な操作の考え方
FAQは、他のKVSとの違いを「値に複雑なデータ型を持てて、そのデータ型ごとに原子的な操作が定義されている点」と説明しています。Redis data typesに並ぶ主な型と、よく使う用途は次のとおりです。
| データ型 | 中身 | よくある用途 |
|---|---|---|
| String | 文字列・数値・バイナリ | キャッシュ、カウンタ |
| Hash | フィールドと値の組 | ユーザー情報、セッション |
| List | 挿入順の並び | ジョブキュー、履歴 |
| Set/Sorted Set | 重複なしの集合/スコア付き | タグ、ランキング |
| Stream | 追記型のログ | イベント配信、非同期処理 |
| JSON | 入れ子の文書 | 商品・設定などの文書 |
| Vector Set | ベクトルの集合 | 類似検索、レコメンド |
たとえば「ランキングの点数を1加える」はSorted SetのZINCRBY一回で済み、読み出してから書き戻す間に別のクライアントが割り込む心配がありません。Redisを使う価値の多くは、この型ごとの操作にあります。
空のインスタンス約3MB・100万キーで約85MBというメモリ使用量の目安
データがメモリに載る前提なので、容量の見積もりが設計の出発点になります。FAQには64ビット環境での実測例が載っています。
- 空のインスタンス:約3MB
- 小さなキーと文字列値の組100万件:約85MB
- 5フィールドのHashを持つキー100万件:約160MB
キー数の上限は2の32乗で、1インスタンスで少なくとも2億5,000万キーを扱えることが試験されています。実際の上限はメモリ量で決まるため、自分のデータでredis-benchmarkを回し、INFO memoryで使用量を確かめてから台数を決めます。
RDBとAOFの2方式による永続化と、既定で毎秒fsyncする設定
Redisはメモリ専用ではありません。Redis persistenceには、一定間隔でスナップショットを取るRDB、書き込みコマンドを追記するAOF、その併用、永続化なしの4通りが載っています。
AOFのfsyncはalways・everysec・noから選べ、既定かつ推奨は毎秒のeverysecです。この設定では障害時に最大1秒分の書き込みを失います。公式はPostgreSQL並みの安全性を求めるならRDBとAOFの併用を勧めており、AOFだけの運用は勧めていません。設定値ごとの失うデータ量の比較は、KVSの記事で詳しく扱っています。
Redis 8.0〜8.10系の版の歩みとBSDからAGPLv3までのライセンス変遷
Redisは2024年から2025年にかけてライセンスが2回変わり、その間にフォークのValkeyが生まれました。採用判断に直結するので、時系列で整理します。
7.2までBSD、7.4でRSALv2とSSPLv1、8.0でAGPLv3を加えた3段階
ライセンスの流れは、リポジトリのLICENSE.txtと公式ブログで確かめられます。
- 7.2以前:BSD 3条項ライセンス。この版までは従来どおり使える
- 7.4以降:2024年3月にRSALv2とSSPLv1のデュアルライセンスへ移行。いずれもOSIが承認したオープンソースライセンスではない
- 8.0以降:RSALv2・SSPLv1・AGPLv3の三択。2025年5月1日の公式ブログで、OSI承認のAGPLを追加の選択肢にすると発表された
社内システムのバックエンドとして改変せずに使う限り、どのライセンスでも大きな制約は生じにくい構成です。注意が要るのは、Redisを改変して外部に提供する場合や、Redisそのものをサービスとして売る場合です。AGPLv3はネットワーク越しに使わせる改変版のソース開示を求めるため、該当しそうなら法務の確認を通します。
8.6のLRMエビクションや8.10のBACKUPなど直近の版で増えた機能
GitHubのリリース一覧で確かめた、8系の各マイナー版の主な追加機能です。8.0から8.10までの6つのマイナー版が、約1年3か月の間に出ています。
- 8.0(2025年5月2日):JSON、時系列、確率的データ構造、Query Engineを本体に統合し、Vector Setsをbetaで追加
- 8.2(2025年8月4日):Streamsに
XDELEXとXACKDELを追加し、ベクトル圧縮に対応した索引を導入 - 8.4(2025年11月18日):文字列の比較つき更新・削除、ハイブリッド検索の
FT.HYBRID、I/Oスレッドの性能向上 - 8.6(2026年2月10日):LRMエビクション、ホットキーを調べる
HOTKEYS、XADDの冪等化 - 8.8(2026年5月25日):新しいデータ構造のArray、レート制限向けの
INCREX - 8.10(2026年7月29日):Hashのメモリ削減、オンラインバックアップの
BACKUP、SUNIONCARD
2026年10月時点の最新は8.10系のパッチ版8.10.2(9月17日公開)で、同日に8.2〜8.8系のパッチも出ています。Key evictionによると、8.6で加わったLRMは読み取りでは時刻を更新せず、書き込みだけで更新する方式です。よく読まれるが更新されない古いデータから追い出したい場合に向きます。
Valkeyとの分岐と、RedisとValkeyのどちらを選ぶかの判断材料
2024年のライセンス変更を受け、BSD版のRedisを引き継ぐ形でLinux Foundation傘下のValkeyが始まりました。Valkeyのリリース一覧では、2026年9月に9.1.2と9.0.6、9.2のRC1が出ています。
選び方は、使いたい機能と動かす場所で決まります。JSONやVector Sets、Query EngineをRedis本体のまま使いたいならRedisです。AWSのElastiCacheやGoogle CloudのMemorystoreで、BSD系ライセンスのまま運用したいならValkeyが候補に入ります。互換性や移行の注意点はValkeyとは?Redisとの違い・Streamsの使い方と導入手順で比べています。
Docker上でRedis 8.10を起動しJSONとVector Setsを試す手順
Redis 8で本体に入った機能は、公式イメージを起動するだけで試せます。Docker Hubのredis公式イメージには、2026年10月時点で8.10・8.10.2・8.10-alpineのタグがあります。
redis:8.10イメージを起動してINFO serverで版を確かめるコマンド
Run Redis Open Source on Dockerの手順に沿い、版を固定して起動します。公開ポートを127.0.0.1に限定しておくと、検証中のRedisが社内ネットワークから見えません。
# 版を固定して起動(ポートはローカルだけに公開)
docker run -d --name redis -p 127.0.0.1:6379:6379 redis:8.10
# コンテナ内のredis-cliで接続し、版を確かめる
docker exec -it redis redis-cli INFO server | grep redis_version
# 以降の操作は対話モードで行う
docker exec -it redis redis-cli
redis_versionの行に8.10系の版番号が出れば準備完了です。データを残したい場合は、公式手順のとおり-vでホストのディレクトリを/dataにマウントします。Redis CLIのドキュメントには、接続先の指定やパイプでの一括投入の方法もまとまっています。
JSON.SETとJSON.GETで入れ子の文書を保存し一部だけ取り出す例
8.0より前はRedis Stackという別配布が必要だったJSONが、本体だけで使えます。JSONのドキュメントの書式で、商品データを保存して価格だけを読み書きする例です。
> JSON.SET item:1 $ '{"name":"Hyperion","price":1500,"tags":["bike","enduro"]}'
OK
> JSON.GET item:1 $.price
"[1500]"
> JSON.NUMINCRBY item:1 $.price 100
"[1600]"
> JSON.GET item:1 $.tags[0]
"[\"bike\"]"
文書全体を文字列で保存すると、価格だけを変えるにも全体を読み出して書き戻す必要があります。JSON型ならJSONPathで指定した位置だけを原子的に更新できるため、在庫数や価格のように頻繁に変わる項目を持つ文書に向いています。
VADDとVSIMで類似ベクトルを検索しFILTERで属性を絞り込む例
Redis vector setsは、Sorted Setのスコアの代わりにベクトルを持つ型です。8.0でbeta表記付きで加わり、作者のantirez氏が設計しました。公式の2次元の例をそのまま示します。
> VADD points VALUES 2 1.0 1.0 pt:A
(integer) 1
> VADD points VALUES 2 -1.0 -1.0 pt:B
(integer) 1
> VADD points VALUES 2 -1.0 1.0 pt:C
(integer) 1
> VADD points VALUES 2 1.0 -1.0 pt:D
(integer) 1
> VADD points VALUES 2 1.0 0 pt:E
(integer) 1
> VSIM points values 2 0.9 0.1
1) "pt:E"
2) "pt:A"
3) "pt:D"
4) "pt:C"
5) "pt:B"
> VSETATTR points pt:A "{\"size\":\"large\",\"price\": 18.99}"
(integer) 1
> VSETATTR points pt:B "{\"size\":\"large\",\"price\": 35.99}"
(integer) 1
> VSETATTR points pt:C "{\"size\":\"large\",\"price\": 25.99}"
(integer) 1
> VSIM points ELE pt:A FILTER '.size == "large" && .price > 20.00'
1) "pt:C"
2) "pt:B"
実際の用途では、文章の埋め込みベクトルを数百次元で入れます。FILTERはJSON属性に対する簡単な式で、カテゴリや価格帯で候補を絞ってから近い順に返せます。ベクトル専用DBを別に立てるほどでもない件数なら、キャッシュと同じRedisで済ませられるのが利点です。
Sentinel・Cluster・マネージドの3構成から本番の可用性を設計する
1台のRedisでは、そのサーバーが落ちた時点でキャッシュもセッションも消えます。本番では、次の3つのどれかで冗長化します。
Sentinelは3台以上で組み、非同期複製で書き込みを失う窓を見込む
Redis replicationでプライマリとレプリカを組み、Redis Sentinelが障害を検知して自動でフェイルオーバーさせる構成です。公式は、堅牢な構成には少なくとも3つのSentinelを別々のマシンに置くよう求めており、Sentinelは既定でTCPの26379番ポートを使います。
見落としやすいのは、複製が非同期である点です。公式は、Sentinelとレプリケーションの組み合わせでは、クライアントに成功を返した書き込みでも障害時に失われうると明記しています。決済の確定のように1件も失えないデータを、Redisだけに置く設計は避けます。
Clusterは16384のスロットに分散しhash tagで複数キー操作をまとめる
1台のメモリに収まらない量を扱うなら、Redis Clusterでデータを複数ノードに分けます。キーはCRC16の値を16384で割った余りでハッシュスロットに割り当てられ、最小構成はマスター3台です。ノード間の通信には、データ用ポートに10000を足した番号(6379なら16379)を使います。
アプリ側で必ず直す点が1つあります。複数キーをまとめて扱うコマンドやトランザクションは、すべてのキーが同じスロットにある場合しか動きません。user:{123}:profileとuser:{123}:accountのように波括弧で同じ部分を囲む「hash tag」を付け、関係するキーを同じスロットに寄せます。
ElastiCache・Azure・Upstash・Memorystoreの選定基準
Sentinelのマシン管理やパッチ適用を自分で持ちたくないなら、マネージドを選びます。動かすクラウドで候補がほぼ決まります。
- AWS:ElastiCacheとMemoryDB。エンジンの選び方と料金はAWSでRedisを使う方法:ElastiCache・MemoryDB・EC2の選び分けと接続手順
- Azure:Azure Cache for Redisとは?仕組み・5つの階層と料金・Azure Managed Redisへの移行手順
- Google Cloud:Memorystore for Valkeyとは:9.1の新機能・料金・作成と移行の手順
- サーバーレスやエッジ:Upstashとは?サーバーレスRedisの料金・無料枠と使い方
注意点は、マネージドによって使えるエンジンと版が本家Redisと一致しないことです。Redis 8のJSONやVector Setsを前提に設計するなら、選んだサービスがその版とモジュールに対応しているかを先に確かめます。
Redisを採用する条件と、RDBやMemcachedを選ぶべき場面の判断基準
ここまでの仕様を踏まえ、Redisを使うかどうかを言い切ります。軸は「消えたときに作り直せるか」と「メモリに収まるか」の2つです。
キャッシュ・セッション・ランキング・ジョブキューでRedisを採用する条件
次のどれかに当てはまるなら、Redisを採用します。
- RDBの読み取り負荷を下げるキャッシュで、正本はRDBにある
- Webアプリのセッションやログイン状態で、消えても再ログインで済む
- ランキングや回数制限のように、Sorted Setや
INCRの原子的な操作がそのまま仕様になる - 非同期処理のジョブキューやイベント配信で、StreamsやListで受け渡しを組める
セッションの保存先として選ぶ際の比較はDjangoのセッション設定:保存先5種の選び分けとRedis構成の判断、CIで結合テスト用のRedisを立てる方法はGitHub Actionsのサービスコンテナ(services)|DB・Redisを立てる結合テストと起動待ちの設計で扱っています。単純な文字列キャッシュだけで、データ型も永続化も要らないなら、Memcachedでも足ります。
正本データ・メモリ超過・配布の制約がある場合にRedisを見送る判断
次のどれかに当てはまるなら、Redisを主たる保存先にはしません。
- 受注や会計のように、1件でも失うと業務が止まる正本データ
- データ量がメモリに収まらず、増え方も読めない
- SQLの結合や集計で、複数の条件を組み合わせて検索したい
- Redisを改変して製品に組み込み、外部へ提供する予定がある
1つ目は前述の非同期複製の仕様と重なり、2つ目はFAQが示すとおりメモリより大きなデータを扱わない設計と矛盾します。この場合は正本をRDBに置き、Redisは読み取りの多い一部を載せる層に留める構成です。キャッシュ層を含めたDBの構成を見直す段階であれば、データベース設計・移行支援で現行のテーブルとアクセスの傾向を棚卸しするところから相談できます。
よくある質問
Redisについて検索されることの多い質問に答えます。
Redisの読み方は「レディス」と「リディス」のどちらですか?
公式FAQは、英語の「red」に「kiss」からkを抜いた音を足した発音だと説明しています。日本語のカタカナでは「レディス」が近く、技術記事や製品資料でもこの表記が多く使われています。名前はREmote DIctionary Serverの頭字語で、遠隔から使える辞書型のサーバーという意味です。
Redisは無料で商用利用できますか?
Redis本体は無料でダウンロードして使えます。8.0以降はRSALv2・SSPLv1・AGPLv3から選べ、社内システムのバックエンドとして改変せずに使う用途なら、商用でも通常は問題になりません。Redisを改変して外部に提供する場合や、Redisをホスティングして売る場合はライセンスごとの条件を読み、必要なら法務の確認を取ります。7.2以前の版はBSDライセンスのままです。
Redisはデータベースとして使えますか?キャッシュ専用ですか?
RDBとAOFで永続化できるため、データベースとしても使えます。ただし、データ全体がメモリに載る前提で、複製は非同期です。メモリに収まる量で、最大1秒程度の書き込みの喪失を許容できるデータなら主たる保存先にもできます。受注や会計のような正本はRDBに置き、Redisはキャッシュやセッションに使う構成が安全です。
Redisの最新バージョンはいくつですか?
GitHubのリリース一覧では、2026年10月時点の最新は8.10系で、2026年9月17日に8.10.2が出ています。同日に8.8.3、8.6.7、8.4.7、8.2.10も公開されており、8系の複数のマイナー版が並行してパッチ適用の対象です。新しく使い始めるなら、Docker Hubのredis:8.10のように版を固定したタグを使います。
Redis Stackはまだ必要ですか?
Redis 8以降では、通常は不要です。8.0でJSON、時系列、確率的データ構造、Query Engineが本体に統合され、すべてのバイナリ配布に含まれるようになりました。Redis Stackを使っていたのは主に7系以前でこれらの機能を使うためなので、8系に上げる際は、Stack専用のイメージから公式のredisイメージへの切り替えを検討します。
関連記事
- KVS(キーバリューストア)とは:Redisで動かして分かる仕組みとRDBとの使い分け:基本コマンドと永続化・maxmemoryの詳細
- Valkeyとは?Redisとの違い・Streamsの使い方と導入手順:フォーク側の版と移行
- AWSでRedisを使う方法:ElastiCache・MemoryDB・EC2の選び分けと接続手順:AWSでの構成と料金
- Azure Cache for Redisとは?仕組み・5つの階層と料金・Azure Managed Redisへの移行手順:Azureでの選択肢
- Upstashとは?サーバーレスRedisの料金・無料枠と使い方:サーバーレス環境での使い方