今回は、インメモリデータストアであるRedisと、
RedisのGUIツールRedis Insightを、Dockerコンテナでローカル動作させて利用する設定等のメモです。
目次
バージョン
- Docker Engine: 28.1.1
- Compose: v2.35.1-desktop.1
-
redis:7-alpine
Docker Compose・Confファイル
今回は、RedisもRedisInsightもコンテナで立ち上げて利用します。
そのため、docker-compose.ymlを用意します。
docker-compose.yml
version: '3.8'
services:
# Redisサービスの定義
redis:
# 使用するDockerイメージ(Redis 7のAlpine版)
image: redis:7-alpine
# コンテナ名の指定
container_name: redis-practice
# ポートマッピング(ホスト:コンテナ)
ports:
- "6379:6379"
# ボリュームマウント
volumes:
# 名前付きボリューム(Redisのデータ永続化用/格納ディレクトリ)
- redis-data:/data
# ホストの設定ファイルをコンテナにマウント
- ./redis.conf:/usr/local/etc/redis/redis.conf
# Redis起動時のコマンド(カスタム設定ファイルを使用)
command: redis-server /usr/local/etc/redis/redis.conf
# 再起動ポリシー(手動停止以外は自動再起動)
restart: unless-stopped
# RedisInsightサービスの定義(Redis管理用GUI)
redisinsight:
# 使用するDockerイメージ(RedisInsightの最新版)
image: redis/redisinsight:latest
# コンテナ名の指定
container_name: redisinsight
# ポートマッピング(ホスト:コンテナ)
ports:
- "5540:5540"
# ボリュームマウント
volumes:
# 名前付きボリューム(Redisのデータ永続化用/格納ディレクトリ)
- redisinsight-data:/data
# 再起動ポリシー(手動停止以外は自動再起動)
restart: unless-stopped
# 依存関係の指定(redisサービスの起動を待つ)
depends_on:
- redis
# 名前付きボリュームの定義
volumes:
# Redisのデータ保存用
redis-data:
# RedisInsightのデータ保存用
redisinsight-data:
Redis confファイル
redis.conf
# Redis設定ファイル(学習用)
# バインドアドレス(全てのインターフェースからの接続を許可)
bind 0.0.0.0
# ポート番号
port 6379
# データベース数
databases 10
# 永続化設定(RDBファイルの保存条件)
# 900秒間に1回以上の変更があれば保存
save 900 1
# 300秒間に10回以上の変更があれば保存
save 300 10
# 60秒間に10000回以上の変更があれば保存
save 60 10000
# RDBファイル名
dbfilename dump.rdb
# データディレクトリ
dir /data
# AOF(Append Only File)永続化
appendonly yes
appendfilename "appendonly.aof"
# ログレベル(debug, verbose, notice, warning)
loglevel notice
# 最大メモリ設定(例:256MB)
maxmemory 256mb
# メモリが上限に達した時の動作
maxmemory-policy allkeys-lru
# maxmemory-policy オプションメモ
# LRU系(最近使われていない順に削除)
# allkeys-lru # 全キーから最も古いものを削除(現在の設定)
# volatile-lru # 有効期限付きキーのみから最も古いものを削除
# # LFU系(使用頻度が低い順に削除)
# allkeys-lfu # 全キーから最も使用頻度が低いものを削除
# volatile-lfu # 有効期限付きキーのみから使用頻度が低いものを削除
# # ランダム削除
# allkeys-random # 全キーからランダムに削除
# volatile-random # 有効期限付きキーのみからランダムに削除
# # TTL系(有効期限が近い順に削除)
# volatile-ttl # 有効期限付きキーのみから有効期限が近いものを削除
# # 削除しない
# noeviction # 削除せず、書き込み時にエラーを返す(デフォルト)
Docker・Redis Insight コンテナ立ち上げ
以下コマンド等でコンテナを立ち上げます。
docker-compose up -d
Redis Insight アクセス
localhost:ポート番号(docker-compose.yamlで定義した)で、Redis Insightにアクセスできます。
初回は同意確認とPrivacy Settingsが表示されます。
Add Redis databaseから接続していきます。
接続URLは、以下の形式で指定します。
- 通常:
redis://[username:password@]host:port[/db] - TLS有効:
rediss://[username:password@]host:port[/db]
今回はパスワードなど設定していないので、redis://default@redis:6379で接続できます。
接続できたら一覧に表示されますので、クリックして選択します。
何もデータ等も存在しないため、簡単なデータを追加・編集してみます。
追加できました。編集も行えますので、値を変更してみます。
redis-cli
先ほどまでの手順でRedisをコンテナ立ち上げできている場合、cliでも操作を行えます。
https://redis.io/docs/latest/develop/tools/cli/
以下コマンドやDocker DesktopのExec等でコマンド実行できます。
docker-compose exec redis redis-cli
Redis操作コマンドメモ
https://redis.io/docs/latest/develop/using-commands/
# 文字列の保存と取得
SET mykey "Hello Redis"
GET mykey
# キーの存在確認
EXISTS mykey
# キーの削除
DEL mykey
# TTL(有効期限)付きで保存(秒単位)
SET tempkey "temporary value" EX 60
TTL tempkey
# リストの操作
LPUSH mylist "world"
LPUSH mylist "hello"
LRANGE mylist 0 -1
# ハッシュの操作
HSET user:1000 name "Taro Yamada"
HSET user:1000 email "taro@example.com"
HGET user:1000 name
HGETALL user:1000
# セットの操作
SADD myset "apple"
SADD myset "banana"
SADD myset "orange"
SMEMBERS myset
# 全てのキーを表示
KEYS *
# データベースをクリア
FLUSHDB
今回のメモは以上となります。
Redisは、他のインメモリデータストアと同様によく使われています。
また、Redis公式が提供しているRedisInsightは色々なことができます。
RedisInsightできること
-
- Redisへ接続・管理
- Keyの一覧表示、検索、作成、編集、削除
- String / Hash / List / Set / ZSet など各データ型の中身確認
- Redisの状態確認(メモリ、接続数、統計など)
- Slow Log や実行状況の確認
- Pub/Sub の確認
- Stream の閲覧・操作
- KeyのTTL/有効期限の確認
- バックアップやデータ移行の補助
- 複数DBや複数インスタンスの管理
Redis特化のツールを探している場合オススメです。











