カテゴリ: データベース 更新日: 2026/03/14

Redis入門!初心者でもわかるデータ構造(String・List・Set・Hash)の仕組み

Redisのデータ構造とは?String・List・Set・Hashを解説
Redisのデータ構造とは?String・List・Set・Hashを解説

先生と生徒の会話形式で理解しよう

生徒

「最近よく『Redis(レディス)』っていう言葉を聞くんですけど、普通のデータベースと何が違うんですか?」

先生

「Redisは、データをメモリという『超高速な机の上』に置くタイプのデータベースです。一般的なデータベースが大きな倉庫から書類を探すようなものだとしたら、Redisは手元のメモ帳をパッと開くような速さが特徴ですね。」

生徒

「メモリ? 難しそうですね…。初心者でもデータを整理する方法は覚えられますか?」

先生

「もちろんです!Redisには『データの形(データ構造)』がいくつか決まっています。今回は、基本の4つの形を身近なものに例えて説明しますね。プログラミングが初めてでも大丈夫ですよ。」

1. Redisとは?高速なデータベースの秘密

1. Redisとは?高速なデータベースの秘密
1. Redisとは?高速なデータベースの秘密

Redis(レディス)は、非常に高速に動作するデータベース管理システムです。一般的なデータベース(MySQLなど)は、パソコンの中にある「ストレージ(本棚のような長期保存場所)」にデータを書き込みますが、Redisは「メモリ(作業机のような一時的な場所)」にデータを保存します。

机の上にあるものはすぐに手に取れるのと同じで、Redisは驚くほどのスピードでデータを処理できます。ただし、机の上は広さに限りがあるため、データを整理して効率よく置く必要があります。その整理術が、今回解説する「データ構造」です。

用語解説:データベース
大量の情報をコンピュータの中で整理して、後から使いやすく保存しておく仕組みのことです。

用語解説:メモリ
コンピュータが作業をするためのスペースです。電源を切ると中身が消えてしまいますが、読み書きの速度が非常に速いのが特徴です。

エンジニアの必須スキル「SQL」を、 図解と豊富な練習問題でゼロから体系的に学びたい人へ。 MySQLやPostgreSQLなど、各種データベースに対応した不朽の入門書です。

SQL 第2版 ゼロからはじめるデータベース操作をAmazonで見る

※ Amazon広告リンク

2. 基本のデータ構造その1:String(文字列)

2. 基本のデータ構造その1:String(文字列)
2. 基本のデータ構造その1:String(文字列)

String(ストリング)は、Redisの中で最もシンプルで基本的なデータの形です。「キー(名前)」に対して「値(中身)」を一つだけ保存します。これは、小学校で使う「名前シール」を貼った「筆箱」のようなものです。一つの筆箱に一つの名前が付いている状態です。

例えば、「ユーザー名」という名札に「山田太郎」という値をセットするような使い方が一般的です。ウェブサイトの訪問回数を数えたり、パスワードを一時的に保存したりするときによく使われます。

データのイメージ:


key (キー)    | value (値)
--------------+------------
user:1:name   | 山田太郎
user:2:name   | 佐藤花子
login:count   | 10
site:status   | 稼働中

操作の例:


-- 名前を保存する(SETコマンド)
SET user:1:name "山田太郎"

-- 名前を取り出す(GETコマンド)
GET user:1:name

実行結果:


"山田太郎"

3. 基本のデータ構造その2:List(リスト)

3. 基本のデータ構造その2:List(リスト)
3. 基本のデータ構造その2:List(リスト)

List(リスト)は、データが「順番に並んだ列」のことです。スーパーのレジ待ちの行列や、音楽の再生リストをイメージすると分かりやすいでしょう。データの「最初(左)」か「最後(右)」に、新しいデータをどんどん付け足していくことができます。

例えば、チャットアプリのメッセージ履歴や、SNSの最新ニュースの表示順序などを管理するのに適しています。順番が大切なデータを扱うときに非常に強力です。

データのイメージ(チャットの履歴など):


index (順番) | value (メッセージ内容)
-------------+-----------------------
0 (最新)     | こんにちは!
1            | お疲れ様です
2            | 了解いたしました
3 (古い)     | よろしくお願いします

操作の例:


-- リストの右端(後ろ)にデータを追加する
RPUSH chat_history "よろしくお願いします"
RPUSH chat_history "了解いたしました"
RPUSH chat_history "お疲れ様です"

-- リストの中身を全部見る
LRANGE chat_history 0 -1

実行結果:


1) "よろしくお願いします"
2) "了解いたしました"
3) "お疲れ様です"

4. 基本のデータ構造その3:Set(セット)

4. 基本のデータ構造その3:Set(セット)
4. 基本のデータ構造その3:Set(セット)

Set(セット)は、データの「集まり」を管理するものですが、Listとは大きな違いが二つあります。一つは「順番がバラバラ」であること。もう一つは「同じデータは二つ以上入れられない(重複禁止)」ということです。これは「福袋」の中身や、「クラスの出席簿」の出席者の名前リストのようなものです。同じ人が二人いると困りますよね。

例えば、ブログの記事につける「タグ」や、オンラインゲームに現在ログインしているユーザーのID一覧などに使われます。「重複を自動で防いでくれる」のが大きなメリットです。

データのイメージ(タグ一覧など):


category (カテゴリ) | values (含まれる要素)
--------------------+---------------------------------------
tags:post1          | { "プログラミング", "初心者", "Redis" }
users:online        | { "user_101", "user_205", "user_300" }

操作の例:


-- タグを追加する(「初心者」を2回入れても1つしか保存されません)
SADD post_tags "プログラミング"
SADD post_tags "初心者"
SADD post_tags "初心者"

-- 全てのタグを表示する
SMEMBERS post_tags

実行結果:


1) "プログラミング"
2) "初心者"

5. 基本のデータ構造その4:Hash(ハッシュ)

5. 基本のデータ構造その4:Hash(ハッシュ)
5. 基本のデータ構造その4:Hash(ハッシュ)

Hash(ハッシュ)は、一つのキーの中に、さらに「項目(フィールド)」と「値」のペアを複数保存できる構造です。これは「社員名簿の1ページ」や「プロフィール帳」に例えると分かりやすいです。一人の人物に対して「名前」「年齢」「趣味」といった複数の項目が紐付いていますよね。

String(文字列)をいくつも作るよりも、関連するデータを一つのHashにまとめて管理する方が効率的です。会員情報の管理などに最もよく使われる形の一つです。

データのイメージ(プロフィール):


id | field (項目) | value (値)
---+--------------+-----------
1  | name         | 田中太郎
1  | age          | 28
1  | city         | 東京都
1  | hobby        | キャンプ

操作の例:


-- プロフィール情報を一括で保存する
HSET user:100 name "田中太郎" age "28" city "東京都"

-- 特定の項目(名前)だけ取り出す
HGET user:100 name

-- 全ての項目と値を取り出す
HGETALL user:100

実行結果:


1) "name"
2) "田中太郎"
3) "age"
4) "28"
5) "city"
6) "東京都"

6. なぜRedisのデータ構造を使い分けるのか?

6. なぜRedisのデータ構造を使い分けるのか?
6. なぜRedisのデータ構造を使い分けるのか?

ここまで紹介した「String」「List」「Set」「Hash」を使い分ける理由は、コンピュータにとって「得意な作業」がそれぞれ違うからです。例えば、何万件もあるデータの中から「順番通りに10件だけ取り出す」ならListが速いですし、「この名前は既に登録されているか?」を確認するならSetが非常に速いです。

プログラミング未経験の方は、まず「Redisにはデータの整理ボックスがいくつか種類があって、やりたいことに合わせて箱を選んでいるんだな」と理解するだけで十分です。適切な箱を選ぶことで、ウェブサイトの表示を速くしたり、アプリを快適に動かしたりすることができるようになります。まずは自分の身の回りにあるデータを「これはListかな?」「これはHashでまとめられそう」と想像してみると、Redisの理解がぐっと深まりますよ。

7. 実際の活用シーン:どんなところで使われている?

7. 実際の活用シーン:どんなところで使われている?
7. 実際の活用シーン:どんなところで使われている?

Redisは私たちの生活の裏側でたくさん活躍しています。例えば、ショッピングサイトで「最近チェックした商品」を表示するときは、素早く順番通りに表示できるListやSetが使われることがあります。また、SNSで「いいね!」の数をリアルタイムで更新するときには、計算がとても速いStringの機能が使われています。

普通のデータベースと組み合わせて、Redisを「よく使うデータの仮置き場」として利用することで、システム全体の負荷を減らすという役割も持っています。これを「キャッシュ」と呼びます。私たちが普段スマホでサクサクとアプリを使えているのは、Redisのような高速なデータベースが、目に見えないところでデータをテキパキとさばいてくれているおかげなのです。

カテゴリの一覧へ
新着記事
New1
Rails
RailsのCSRF対策を完全解説!authenticity_token・SameSite・APIモードまで初心者向けに理解
New2
Rails
メール送信の準備をしよう!SMTPテスト用MailhogとLetter Openerの使い方
New3
データベース
Redis(レディス)入門!メモリ使用量の仕組みとデータベースの基本構造を初心者向けに徹底解説
New4
Ruby
Rubyの三項演算子を徹底解説!スッキリ書ける条件分岐のコツと使い方
人気記事
No.1
Java&Spring記事人気No1
Ruby
OpenSSL関連エラーの直し方を完全解説!証明書・ビルドオプション・brew対策まとめ
No.2
Java&Spring記事人気No2
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.3
Java&Spring記事人気No3
Rails
Railsメール確認(confirmable)の実装手順を完全ガイド!初心者でもわかる有効化リンクと期限設定
No.4
Java&Spring記事人気No4
Ruby
RubyのEnumerable高速化ガイド!N+1問題や無駄なループを減らす最適化テクニック
No.5
Java&Spring記事人気No5
Ruby
プロキシ環境でも安心!社内ネットワーク下でのRuby gemインストール完全ガイド【SSL対応も解説】
No.6
Java&Spring記事人気No6
Ruby
Gemとは?RubyGemsとBundlerを初心者向けに完全解説!依存関係管理も図解でわかりやすく理解
No.7
Java&Spring記事人気No7
データベース
Redis入門!キャッシュの仕組みやメリットを初心者向けに徹底解説
No.8
Java&Spring記事人気No8
Ruby
RubyのEnumerable完全解説!cycle・zipで繰り返しの達人になろう