Redisとは?Dockerで起動して基本コマンドを試してみた【超入門】

DB・Redisの記事のアイキャッチ Redis

はじめに

今月は「知見のない技術を学ぼう月間」ということで、Redisを学習していきます。

Redisの役割についてはなんとなく理解していましたが、実際に自分で使用したことはありませんでした。そこで今回は、DockerでRedisを起動し、基本的なコマンドを実行しながら学習していきます。

Redisの学習記事は前編と後編に分ける予定です。前編となる今回は、以下の内容を扱います。

  • Redisとは何か
  • DockerでRedisを起動する
  • redis-cliで基本操作を試す

後編では、RedisとLaravelを組み合わせて、実際にキャッシュとして利用する方法を学習する予定です。

Redisとは何か

Redis(Remote Dictionary Server) は、主にメモリ上でデータを管理するオープンソースのデータストアです。

一般的には、次のような用途で使われます。

  • キャッシュ
  • セッション管理
  • ランキング
  • メッセージング
  • 一時的なデータの保存

Redisの大きな特徴は、データを主にメモリ(RAM)上に保持することになります。Redisは主にメモリ上でデータを操作するため、RDBMSと比較して、単純なキーによるデータ取得などを高速に処理できる場合があります。ただし、Redisを使えば必ず高速化する訳ではないです。そして、RedisがRDBMSの完全な上位互換というわけではなく、それぞれに役割があります。

項目RedisRDBMS
データモデルキーと値、各種データ構造リレーショナル
主な保存場所メモリディスク+メモリキャッシュ
データ操作RedisコマンドSQL
データの関連付けアプリ側で設計JOINなど
永続化RDB、AOFなど標準で永続化
主な用途キャッシュ、セッション、ランキング業務データの管理

RDBMSでもメモリキャッシュは利用されますが、Redisはインメモリでのデータ操作を中心に設計されています。

また、Redisでもデータの永続化機能はありますが、今回の記事では触れません。

DockerでRedisを起動する

まずはRedisの公式Dockerイメージを取得します。

docker pull redis:7.4

今回の記事では7.4系を指定します。取得したイメージを確認します。

test@test ~ % docker images        
REPOSITORY                      TAG         IMAGE ID       CREATED         SIZE
redis                           7.4         d24fb73aa9ca   6 days ago      120MB

Redisコンテナを起動します。

docker run -d \
  --name redis-study \
  -p 127.0.0.1:6379:6379 \
  redis:7.4

各オプションの意味は以下の通りです。

オプション説明
-dバックグラウンドで起動
--name redis-studyコンテナ名を指定
-p 127.0.0.1:6379:6379ホストのlocalhostからRedisへ接続できるようにする
redis:7.4使用するDockerイメージ

Redisの標準ポートは6379になります。コンテナが起動できているか確認します。

test@test ~ % docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                      NAMES
d5359a3304c9   redis:7.4   "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes   127.0.0.1:6379->6379/tcp   redis-study
test@test ~ % docker logs redis-study
1:C 12 Oct 2026 02:27:05.659 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 12 Oct 2026 02:27:05.659 * Redis version=7.4.11, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 12 Oct 2026 02:27:05.659 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1:M 12 Oct 2026 02:27:05.660 * monotonic clock: POSIX clock_gettime
1:M 12 Oct 2026 02:27:05.661 * Running mode=standalone, port=6379.
1:M 12 Oct 2026 02:27:05.661 * Server initialized
1:M 12 Oct 2026 02:27:05.661 * Ready to accept connections tcp
test@test ~ % 

STATUSがUpになっているため、起動しています。ここでは、Redisのログも確認しています。ログからも正常に起動できていることが確認できました。Warningメッセージが表示されていますが、Redisの設定ファイルを明示していないため、デフォルト設定を使用するという意味になります。

Redisには、コマンドを実行するためのredis-cli (CLIツール)が用意されています。

test@test ~ % docker exec -it redis-study redis-cli
127.0.0.1:6379> PING
PONG
127.0.0.1:6379>

接続確認のために、PINGコマンドを実行して、PONGが返ってきました。正常に接続できています。

redis-cliで基本操作を試す

今回の基本操作で試す項目は以下になります。

  1. String型:SET / GET
  2. キーの操作:EXISTS / DEL
  3. 有効期限:EXPIRE / TTL
  4. List型:LPUSH / LRANGE
  5. Hash型:HSET / HGETALL

操作の前にRedisの型について、軽くまとめておきます。

データ型用途の例
String文字列、数値、キャッシュ
List順序付きデータ、キュー
Set重複のない集合
Hashユーザー情報など
Sorted Setスコア付きランキング
Streamイベント・メッセージ処理

上記以外にも型はありますが、今回は省略します。

それでは、1のString型のデータをSETしてみます。

127.0.0.1:6379> SET name "TEST"
OK

SET コマンドは、指定したキーに値を保持します。今度は反対に、保持したデータを取得します。

127.0.0.1:6379> GET name
"TEST"

存在しないキーを指定すると、次のようになります。

127.0.0.1:6379> GET unknown
(nil)

また、String型は数値を保持することもできます。

127.0.0.1:6379> SET count 10
OK
127.0.0.1:6379> GET count
"10"

数値として扱える値に対する操作も用意されています。

127.0.0.1:6379> INCR count
(integer) 11
127.0.0.1:6379> GET count
"11"
127.0.0.1:6379> 

INCRコマンドは値を1増やします。INCRコマンドをうまく使えば、アクセスカウンターとして利用できます。

次にキーの操作です。EXISTS/DEL の確認です。EXISTSコマンドはキーが存在するか確認するコマンドです。

127.0.0.1:6379> EXISTS name
(integer) 1
127.0.0.1:6379> EXISTS count
(integer) 1
127.0.0.1:6379> EXISTS sample
(integer) 0

存在すれば 1、存在しなければ、0 を返します。EXISTSコマンドは複数のキーを指定することもできます。複数のキーを指定した場合は、存在するキーの数が返ります。

127.0.0.1:6379> EXISTS name count sample
(integer) 2
127.0.0.1:6379> 

DELコマンドはキーを削除します。

127.0.0.1:6379> DEL name
(integer) 1
127.0.0.1:6379> GET name
(nil)

戻り値は削除されたキーの数になります。EXISTS同様複数のキーを指定できます。

127.0.0.1:6379> SET num 800
OK
127.0.0.1:6379> DEL num count sample
(integer) 2
127.0.0.1:6379> GET num
(nil)
127.0.0.1:6379> GET count
(nil)

次に有効期限のEXPIRE/TTLの確認です。

Redisでは、キーに有効期限を設定することができます。

127.0.0.1:6379> SET session "testtest"
OK
127.0.0.1:6379> EXPIRE session 60
(integer) 1

sessionキーの有効期限が60秒になりました。キーの有効期限の残り時間を確認します。

127.0.0.1:6379> TTL session
(integer) 55
127.0.0.1:6379> TTL session
(integer) 53

TTLはキーの有効期限の残り時間を秒単位で取得します。有効期限が過ぎたキーをGETするとnil が返ってきます。

TTLの戻り値意味
0 以上残りの有効期限(秒)
-1キーは存在するが、有効期限が設定されていない
-2キーが存在しない
127.0.0.1:6379> GET session
(nil)

次にList型のLPUSH/LRANGE を確認します。RedisのList型は要素を順序付きで管理するデータ型です。

127.0.0.1:6379> LPUSH languages "PHP"
(integer) 1
127.0.0.1:6379> LPUSH languages "C"
(integer) 2
127.0.0.1:6379> LPUSH languages "Java"
(integer) 3
127.0.0.1:6379>

LPUSH キー名 値 で追加することができます。リストの要素を取得するにはLRANGE を使います。

127.0.0.1:6379> LRANGE languages 0 -1
1) "Java"
2) "C"
3) "PHP"
127.0.0.1:6379>

ここでは追加順と逆になっています。今回の例では、LPUSHとLPOPは省略しますLPUSH と LPOP を組み合わせればスタックとして利用できます。その他にも、List型を操作するコマンドはあります。気になる型は公式ドキュメントを参照してください。

Redis lists
Introduction to Redis lists

次はHash型のHSET/HGETALL の確認です。

127.0.0.1:6379> HSET user:1 name "TEST" age 28 language "C"
(integer) 3

ここではuser:1というキーに対して3つのフィールドを保存しています。

user:1
  ├── name     → TEST
  ├── age      → 28
  └── language → C

HGETALLコマンドで、すべてのフィールドを取得します。

127.0.0.1:6379> HGETALL user:1
1) "name"
2) "TEST"
3) "age"
4) "28"
5) "language"
6) "C"
127.0.0.1:6379> 

これで、ユーザ情報のような複数項目をまとめて扱えます。Hash型も内部のフィールドと値は文字列として扱われます。また、Redisでは、user:1のようにコロン(:)でキー名を区切る命名方法が一般的です。ただし、Redis自体がコロンを特別な文字として扱うわけではなく、キー名を整理しやすくするための慣習です。

List型やHash型も同様にEXPIREコマンドで有効期限を設定することができます。

127.0.0.1:6379> EXPIRE user:1 60
(integer) 1
127.0.0.1:6379> TTL user:1
(integer) 54
127.0.0.1:6379> TTL user:1
(integer) -2
127.0.0.1:6379> HGETALL user:1
(empty array)
127.0.0.1:6379> 

また、Hash型の個々のフィールドに対しての操作もあります。気になる方は公式ドキュメントを参照してみてください。

Redis hashes
Introduction to Redis hashes

最後に

今回はDockerでRedisを起動し、redis-cliを使って基本的なコマンドを試してみました。

実際に操作してみると、Redisは単純にキーと値を保存するだけでなく、ListやHashなどのデータ型を扱えることがわかりました。また、キーに有効期限を設定できる点も、キャッシュとして利用するうえで重要な仕組みだと感じました。

今回はRedis単体での基本操作まででしたが、次回はLaravelアプリと組み合わせて、実際にキャッシュとして利用する方法を学習していきたいと思います。

最後まで読んでいただき、ありがとうございました。

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