Amazon MemoryDB for Valkey 入門 - Redis 互換で 30% コスト削減のマネージドデータベース
はじめに
本記事では、Amazon MemoryDB for Valkey について詳しく解説します。Valkey の特徴、 MemoryDB for Redis との比較、実際の移行手順、基本的なコマンド例を紹介します。
MemoryDB とは
Amazon MemoryDB は、 Redis 互換のフルマネージド型インメモリデータベースサービスです。データが永続的に保持されるため、プライマリデータベースとして使用できます。
ElastiCache との違い
Amazon MemoryDB と Amazon ElastiCache の主な違いは、データの永続化とアーキテクチャにあります。
- ElastiCache は、キャッシュ用途のサービスであるため、データの保持期間は一時的です。スナップショットによるバックアップは可能ですが、永続化は行われません。
- MemoryDB は、すべての書き込みを永続化します。ノードに障害が発生してもデータの整合性が保たれ、プライマリデータベースとして使用できます。
Valkey とは
Valkey は、 Redis のオープンソースフォークとして 2024 年に Linux Foundation のもと開始されたプロジェクトです。 Redis Labs が Redis のライセンスを変更した ことを受け、立ち上げられました。Valkey は Redis 7.2 をベースとしており、 Redis との高い互換性を維持しながら、オープンソースライセンス (BSD 3-Clause License) の下で開発が継続されています。
MemoryDB for Valkey とは
MemoryDB for Valkey は、 Amazon MemoryDB で Valkey を使用できるサービスです。従来の MemoryDB for Redis とほぼ同様の機能を使用しながら低価格という利点を享受できます。また、既存の Redis 環境を簡単に Valkey に移行する手順が AWS から提供されています(後述)。
対象読者
本記事は以下の方を対象としています。
- 現在 Redis や ElastiCache を使用しており、 Valkey への移行を検討している開発者・インフラエンジニア
- MemoryDB の導入を検討しているが、 Redis と Valkey のどちらを選ぶべきか迷っている方
参考
- https://aws.amazon.com/jp/memorydb/
- https://aws.amazon.com/jp/elasticache/
- https://aws.amazon.com/jp/blogs/news/get-started-with-amazon-memorydb-for-valkey/
- https://aws.amazon.com/jp/memorydb/pricing/
- https://valkey.io/
- https://redis.io/blog/redis-adopts-dual-source-available-licensing/
- https://redis.io/blog/agplv3/
MemoryDB for Redis との比較
MemoryDB for Valkey と MemoryDB for Redis は、アーキテクチャや機能面で大きな違いはありません。MemoryDB プラットフォーム上で動作し、データの永続化、 Multi-AZ 構成、自動フェイルオーバーなどの機能を提供します。
機能面
現時点では、 MemoryDB for Valkey と MemoryDB for Redis の機能差は限定的です。両者とも以下の機能をサポートしています。
- Redis 互換コマンドセット
- データの永続化とトランザクションログ
- Multi-AZ 構成による高可用性
- 自動バックアップとポイントインタイム復旧
- VPC 内でのセキュアな通信
- 暗号化 (保存時・転送時)
ただし、 Valkey は Redis 7.2 をベースとしているため、 Redis の最新機能に対応していない場合があります。
料金比較
Amazon MemoryDB for Valkey の料金は MemoryDB for Redis OSS よりも 30% 低くなっています。 (2025.7 時点)
具体的な料金例 (アジアパシフィック (東京) リージョン db.r7g.large) :
- MemoryDB for Redis : $0.371/時間
- MemoryDB for Valkey : $0.2597/時間
移行手順
Redis → Valkey の移行は、 AWS コンソールから簡単に実行できます。ダウンタイムなしでエンジンを変更することが可能です。
事前準備
移行する前に、以下の確認を行ってください。
- アプリケーションが使用している Redis コマンドが Valkey でサポートされていることを確認
- 移行対象のクラスターが正常に動作していることを確認
- 必要に応じて事前にバックアップを取得
MemoryDB for Redis から MemoryDB for Valkey への移行
既存の MemoryDB for Redis クラスターを Valkey に移行する手順は以下の通りです。
- MemoryDB コンソール にアクセスし、左ペインメニュー「クラスター」から対象のクラスターを選択します。
- 「修正」ボタンをクリックします。
- 「クラスター設定 > エンジン」で、 Valkey を選択します。
- 「変更をプレビュー」し、内容を確認します。問題がなければ「変更を保存」を選択してエンジンの変更を実行します。
- クラスターのステータスが「Updating」となることを確認します。
- 「Updating」から「Available」に変わり、エンジンタイプが「Valkey」と表示されれば移行完了です。
移行後の確認事項
移行完了後は、以下の手順で動作確認を行ってください。
Valkey CLI のインストール
同じ VPC 内の EC2 インスタンスに valkey-cli をインストールします。
# Amazon Linux の場合
sudo yum install valkey
# Ubuntu の場合
sudo apt update
sudo apt install valkey
MemoryDB for Valkey への接続
# TLS 接続でアクセス
valkey-cli --tls -h your-memorydb-cluster-endpoint.memorydb.ap-northeast-1.amazonaws.com -p 6379
動作確認
# 接続確認
> PING
PONG
# 既存データの確認
> KEYS *
# 基本的な操作テスト
> SET test "hello valkey"
OK
> GET test
"hello valkey"
基本的なコマンド例
MemoryDB for Valkey は Redis 互換のため、既存の Redis コマンドをそのまま使用できます。
基本的な CRUD 操作
データの書き込み (SET)
# 文字列の保存
SET user:1001 "John Doe"
SET user:1002 "Jane Smith"
# 数値の保存
SET counter 100
# TTL 付きでの保存 (60秒後に自動削除)
SETEX session:abc123 60 "user_session_data"
データの読み取り (GET)
# 単一キーの取得
GET user:1001
# 複数キーの一括取得
MGET user:1001 user:1002 counter
データの削除 (DEL)
# 単一キーの削除
DEL user:1001
# 複数キーの削除
DEL user:1001 user:1002 counter
リスト操作
# リストへの要素追加
LPUSH tasks "task1" "task2" "task3"
# リストからの要素取得
LRANGE tasks 0 -1
# リストからの要素削除
LPOP tasks
ハッシュ操作
# ハッシュフィールドの設定
HSET user:profile:1001 name "John Doe" age 30 email "john@example.com"
# ハッシュフィールドの取得
HGET user:profile:1001 name
HGETALL user:profile:1001
# ハッシュフィールドの削除
HDEL user:profile:1001 age
パフォーマンステスト例
valkey-benchmark ツールを使用してパフォーマンステストを実行できます。
# 基本的なベンチマーク (10万リクエスト、50並行接続)
valkey-benchmark --tls -h your-memorydb-cluster-endpoint.memorydb.ap-northeast-1.amazonaws.com -p 6379 -n 100000 -c 50
# SET コマンドのみのベンチマーク
valkey-benchmark --tls -h your-memorydb-cluster-endpoint.memorydb.ap-northeast-1.amazonaws.com -p 6379 -n 100000 -c 50 -t set
# GET コマンドのみのベンチマーク
valkey-benchmark --tls -h your-memorydb-cluster-endpoint.memorydb.ap-northeast-1.amazonaws.com -p 6379 -n 100000 -c 50 -t get
# パイプライン使用時のベンチマーク
valkey-benchmark --tls -h your-memorydb-cluster-endpoint.memorydb.ap-northeast-1.amazonaws.com -p 6379 -n 100000 -c 50 -P 10
出力結果の例
====== PING_INLINE ======
1 requests completed in 0.00 seconds
1 parallel clients
3 bytes payload
keep alive: 1
multi-thread: no
Latency by percentile distribution:
0.000% <= 3.455 milliseconds (cumulative count 1)
100.000% <= 3.455 milliseconds (cumulative count 1)
Cumulative distribution of latencies:
0.000% <= 0.103 milliseconds (cumulative count 0)
100.000% <= 4.103 milliseconds (cumulative count 1)
Summary:
throughput summary: 250.00 requests per second
latency summary (msec):
avg min p50 p95 p99 max
3.452 3.448 3.455 3.455 3.455 3.455
モニタリング設定
MemoryDB for Valkey のモニタリングは CloudWatch を通じて行います。
主要なメトリクス
- CPUUtilization : CPU 使用率
- DatabaseMemoryUsagePercentage : メモリ使用率
- NetworkBytesIn/Out : ネットワーク I/O
- CurrConnections : 現在の接続数
- GetTypeCmds/SetTypeCmds : GET/SET コマンドの実行回数
AWS CLI を使用したアラーム設定例
aws cloudwatch put-metric-alarm \
--alarm-name "MemoryDB-HighCPU" \
--alarm-description "MemoryDB CPU usage is high" \
--metric-name CPUUtilization \
--namespace AWS/MemoryDB \
--statistic Average \
--period 300 \
--threshold 80 \
--comparison-operator GreaterThanThreshold \
--dimensions Name=ClusterName,Value=your-cluster-name \
--evaluation-periods 2
まとめ
MemoryDB for Valkey は、for Redis と高い互換性を維持しながら 30% のコスト削減を実現できるサービスです。既存の MemoryDB for Redis からの移行はダウンタイムなしで簡単に実行できます。永続化が必要な場面では MemoryDB for Valkey 、キャッシュ用途では ElastiCache for Valkey とすることで、用途にあった構成を選択できます。