Redis: Redis チュートリアル ホーム

Redisはオープンソースのインメモリキーバリューストアで、データベース、キャッシュ、メッセージブローカーとして使用できます。複数のデータ構造をサポートし、非常に高いパフォーマンスを提供するため、現代のWebアプリケーションに欠かせないコンポーネントです。

1. Redisとは

Redisは REmote DIctionary Server の略で、2009年にSalvatore Sanfilippoによって開発されました。データをメモリに保存するため、毎秒10万件以上の操作を処理できる高速な読み書き速度を実現しています。

(1) Redisのコア機能

機能 説明
インメモリストレージ データをメモリに保存し、非常に高速な読み書きを実現
永続化 RDBスナップショットとAOFログをサポート
豊富なデータ型 String、Hash、List、Set、Sorted Setなどをサポート
アトミック操作 すべての操作がアトミックで、トランザクションをサポート
Pub/Sub 組み込みのパブリッシュ/サブスクライブメッセージングシステム
高性能 シングルインスタンスのQPSが10万を超え、マスターレプリカレプリケーションとクラスターをサポート
💡 なぜRedisと呼ばれるのですか? Redis = REmote DIctionary Server、つまりリモートからアクセス可能な辞書(キーバリュー)サービスだからです。


2. Redisでできること

(1) キャッシュシステム

これは最も一般的なユースケースです。データベースのクエリ結果、APIレスポンス、ページフラグメントなどをRedisに保存し、アプリケーションのパフォーマンスを大幅に向上させます。

TEXT 📖 参照専用
ユーザーリクエスト → Redisキャッシュを確認 → ヒット → 返却
                               ↓ ミス
                              データベースに問い合わせ → Redisに保存 → 返却

(2) セッションストレージ

ユーザーのログイン状態、ショッピングカート、一時データなどをRedisに保存し、分散環境でのセッション共有をサポートします。

(3) メッセージキュー

RedisのListとPub/Subを使用して、軽量なメッセージキューを実装します。

(4) ランキング

Sorted Setのソート機能を活用して、ゲームのリーダーボードやトレンドリストなどに使用します。

(5) カウンター

StringのINCRコマンドを使用して、記事のビュー数、いいね数、アクセス統計などを実現します。

(6) ソーシャル機能

Setの積集合と和集合の操作を使用して、相互フォロー、知り合いかもしれませんなどのソーシャル機能を実装します。


3. Redisと他のデータベースの比較

(1) Redis vs Memcached

項目 Redis Memcached
データ型 豊富(5つの基本型) Stringのみ
永続化 サポート 非サポート
クラスタリング ネイティブサポート クライアント側シャーディングが必要
メモリ管理 より柔軟 よりシンプル
パフォーマンス 非常に高い 非常に高い
⚠️ 注意:選び方のポイント 単純なキーバリューキャッシュのみが必要な場合はMemcachedで十分です。複雑なデータ構造、永続化、クラスタリングが必要な場合はRedisを選びましょう。

(2) Redis vs リレーショナルデータベース(MySQL)

項目 Redis MySQL
ストレージ メモリ ディスク
データモデル キーバリュー リレーショナルテーブル
クエリ能力 シンプル 強力(SQL)
トランザクションサポート シンプルなトランザクション 完全なACID
パフォーマンス 非常に高い 高い
永続化 オプション デフォルト
💡 ベストプラクティス: Redis + MySQL を併用することをおすすめします。Redisはキャッシュとホットデータ用、MySQLは永続ストレージ用です。

(3) Redis vs MongoDB

項目 Redis MongoDB
データモデル キーバリュー ドキュメント(JSON)
クエリ言語 コマンドベース SQLライク
メモリ使用 すべてインメモリ メモリ+ディスク
ユースケース キャッシュ、セッション、キュー ドキュメントストレージ、コンテンツ管理

4. Redisのユースケース

(1) 主要インターネット企業での利用

(2) 代表的なアプリケーションシナリオ

シナリオ 使用するデータ型 説明
キャッシュ String 有効期限付きでキャッシュデータを保存
セッションストレージ String ユーザーセッション情報を保存
ショッピングカート Hash 商品IDと数量を保存
メッセージキュー List LPUSH/RPOPでキューイング
リーダーボード Sorted Set 自動ソート、リアルタイム更新
ソーシャル関係 Set フレンドリスト、積集合計算
カウンター String INCRでアトミック加算
レート制限 String + TTL アクセス回数の追跡

5. Redisのバージョン履歴

バージョン リリース日 主な機能
1.0 2009年 初回リリース
2.0 2010年 仮想メモリ、Pub/Sub
2.6 2012年 Luaスクリプト、有効期限の精度向上
2.8 2013年 部分同期、設定の書き換え
3.0 2015年 公式クラスターサポート
3.2 2016年 GEO、ビットマップ最適化
4.0 2017年 モジュールシステム、ハイブリッド永続化
5.0 2018年 Streamsデータ型
6.0 2020年 ACLアクセス制御、マルチスレッドI/O
7.0 2022年 Functions、マルチパートAOF
💡 推奨バージョン: より良いパフォーマンスと機能を得るために、Redis 6.0以降を使用することをおすすめします。


6. このチュートリアルの対象者


7. 前提知識


8. チュートリアルの内容

このチュートリアルは4つのパートに分かれています:

  1. Redisの基礎:インストール、設定、基本操作
  2. データ型の詳細:String、Hash、List、Set、Sorted Set
  3. 高度な機能:トランザクション、永続化、セキュリティ、パフォーマンス最適化
  4. 実践的な応用:Python、Java、Node.jsでのRedisの使用

▶ サンプル

基本的な接続と操作:

BASH
127.0.0.1:6379> PING
PONG

127.0.0.1:6379> SET mykey "Hello"
OK
127.0.0.1:6379> GET mykey
"Hello"

❓ よくある質問

Q Redisはデータをメモリに保存しますが、停電時にデータは失われますか?
A Redisは永続化をサポートしており、メモリ内のデータをディスクに保存できます。RDBスナップショット、AOFログ、またはその両方を使用できます。
Q Redisはどのくらいのデータを保存できますか?
A 使用可能なメモリに依存します。単一のRedisインスタンスで数GBのデータを保存でき、クラスタリングによりTBレベルまで拡張できます。
Q Redisはシングルスレッドですか?
A Redisのコアコマンド実行はシングルスレッドですが、バージョン6.0ではネットワークの読み書きにマルチスレッドI/Oが導入されました。シングルスレッド設計によりロック競合を回避し、実際にパフォーマンスが向上しています。
Q Redisと従来のデータベースの違いは何ですか?
A Redisはデータをメモリに保存するNoSQLデータベースで、キャッシュやホットデータに最適です。従来のデータベースはデータをディスクに保存して永続ストレージを提供します。通常、これらは併用されます。

📖 まとめ

📝 練習問題

  1. 考えてみよう:あなたのプロジェクトでは、どのようなシナリオがRedisに適していますか?
  2. 調査してみよう:普段利用しているWebサイトやアプリで、Redisが何に使われている可能性があるか考えてみましょう。
  3. 比較してみよう:RedisとMemcachedのメリットとデメリットは何ですか?どのように選びますか?

9. 次のレッスン

次のレッスンでは、Redisのインストールについて学びます。Linux、Windows、Macでのインストール方法を解説します。

Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%