AWS

AWSでRedisを使う方法:ElastiCache・MemoryDB・EC2の選び分けと接続手順

AWSでRedisを使う方法:ElastiCache・MemoryDB・EC2の選び分けと接続手順

AWSでRedisを動かす経路は、ElastiCache、MemoryDB、AWS Marketplace経由のRedis Cloud、EC2への自前構築の4つです。このうちAWSのマネージドサービスが提供するRedis OSSは7.1で止まっており、現行の主力エンジンはRedis互換のValkeyへ移行した状態です。この記事では、4経路の違いと版の事情を公式ドキュメントで確かめ、東京リージョンの実額でエンジン別の料金を比べたうえで、ElastiCache Serverless for Valkeyを作成してEC2とPythonからTLS接続するまでを手順で示します。自前のRedisから移すときの確認点と、ElastiCacheを選ばない場面も扱います。

まとめ:AWSのRedisはElastiCache for Valkeyを起点に4経路から選ぶ

新規にAWSでRedisを使うなら、ElastiCache Serverless for Valkeyが出発点です。Redis OSSと同じコマンドで動き、東京リージョンでの最小課金は月7ドル台に収まります。Redis OSSエンジンを選んでも版は7.1までで、東京の単価はノードでValkeyの1.25倍、Serverlessの保存量で1.5倍に上がります。

キャッシュではなく主データの置き場にするならMemoryDB、Redis 8系の新機能が要るならRedis CloudかEC2自前構築を検討します。接続側の注意は2点です。ServerlessはTLS必須かつクラスターモード固定なので、クライアントはTLSとクラスタープロトコルの両方に対応したものを選び、セキュリティグループで6379と6380の2ポートを開けます。

AWSでRedisを動かす4つの経路とRedis OSSが7.1で止まった版事情

最初に、どの経路を選ぶとどの版のRedisが手に入るのかを整理します。ElastiCacheそのものの仕組みはAmazon ElastiCacheとは?対応エンジン・Serverlessとノードベースの違いと料金・採用判断で解説しているので、本章は経路の比較に絞ります。

ElastiCache・MemoryDB・Redis Cloud・EC2自前の4経路比較

4経路は「誰が運用するか」と「使えるエンジンの版」で分かれます。2026年10月時点の公式ドキュメントで確認できた内容を表にまとめました。

経路 エンジンと版 運用主体 向く用途
ElastiCache Valkey≤9.1系/Redis OSS≤7.1 AWS キャッシュ・セッション・ランキング
MemoryDB Valkey/Redis OSS AWS 耐久性が要る主データの保存
Redis Cloud(Marketplace) Redis社の最新版 Redis社 Redis 8系固有機能の利用
EC2自前構築 任意の版 自社 版や設定を完全に握りたい場合

Redis CloudはAWS Marketplace経由で契約でき、請求をAWSアカウントにまとめられます。Redis Cloud on AWSの案内によると、VPCピアリングやTransit Gatewayによる閉域接続も利用可能です。MemoryDBとElastiCacheの細かな差はAmazon MemoryDBとは?ElastiCacheとの違い・料金と2026年の選び方に譲ります。

ElastiCacheのRedis OSS 7.1上限と現行Valkey 9.1系の背景

ElastiCacheのエンジンバージョンのページは、ServerlessとノードベースのどちらもRedis OSSは7.1以前をサポートすると明記しています。一方、Valkeyは9.1まで提供されており、9.0ではマルチAZトランザクションログによる耐久性、ハッシュのフィールド単位の有効期限、クラスターモードでの複数データベースが加わりました。

背景はライセンスです。RedisのLICENSE.txtによれば、7.2以前はBSD 3条項のままですが、Redis 8以降はRSALv2・SSPLv1・AGPLv3の3ライセンス制です。AWSはLinux Foundation管理のフォークであるValkeyに軸足を移しました。AWSで「Redisを使う」とき、実体はValkeyになると考えてください。ValkeyとRedisの機能差はValkeyとは?Redisとの違い・Streamsの使い方と導入手順で整理しています。

Redis OSS 4・5系は延長サポート課金中、6系も2027年1月末に標準終了

既存クラスターを抱えている場合は、版によって追加料金が発生します。同じエンジンバージョンのページの表では、Redis OSS 4と5の標準サポートは2026年1月31日で終わり、2月1日から延長サポートへ自動で移っています。6系の標準サポートは2027年1月31日までです。

延長サポートの上乗せは小さくありません。東京リージョンのcache.t4g.mediumでは、通常のノード料金0.098ドル毎時に対して、延長サポート1〜2年目は0.078ドル毎時が加わり、3年目は0.157ドル毎時になります。4・5系のまま動いているクラスターは、Valkeyへの切り替えを先に検討する価値があります。

東京リージョンの実額で比べるValkeyとRedis OSSエンジンの料金差

料金はAWS Price List APIの東京リージョン(ap-northeast-1)のオファーファイルから取得しました。公開日は2026年9月14日です。最新の単価はElastiCacheの料金ページで確認してください。

Serverless最小課金:Valkey月7ドル台・Redis OSS月110ドル台

Serverlessはデータ保存量(GB時間)と処理量(ECPU)の2軸で課金されます。最小課金量はValkeyが100MB、Redis OSSが1GBで、この差は2024年10月8日のValkey対応の発表に明記されています。

項目(東京) Valkey Redis OSS
データ保存(1GB時間あたり) 0.101ドル 0.151ドル
ECPU(100万あたり) 0.0027ドル 0.0041ドル
最小課金の保存量 100MB 1GB
最小保存量だけの月額(730時間) 約7.37ドル 約110.23ドル

発表文にある「月額6ドルから」は米国リージョンの単価です。東京では約7.37ドルになります。開発環境や小規模なセッションストアなら、Valkeyを選ぶだけで固定費が15分の1まで下がる計算です。料金の試算方法はElastiCache Serverless for Valkeyとは?料金の計算・上限値と作成手順で詳しく扱っています。

ノードベースのcache.t4g・r7g系で比べたエンジン別の時間単価

ノードベースでは、同じノードタイプでもエンジンによって単価が変わります。東京のオンデマンド単価は、cache.t4g.microがValkey 0.020ドル・Redis OSS 0.025ドル、cache.t4g.mediumが0.0784ドル・0.098ドル、cache.r7g.largeが0.2104ドル・0.263ドルです。どのサイズでもValkeyはRedis OSSの8割の単価です。

cache.r7g.largeをプライマリとレプリカの2台で1か月動かすと、Valkeyは約307ドル、Redis OSSは約384ドルになります。Valkey 9.0の同期耐久性を有効にすると、cache.r7g.largeで1台あたり0.0379ドル毎時が上乗せされる点も覚えておいてください。

AWS CLIによるElastiCache Serverless for Valkey作成

ここからは実際にキャッシュを作ります。前提は、アプリケーションを動かすEC2(またはECS)と同じVPCに、プライベートサブネットが2つ以上あることです。

セキュリティグループで6379と6380を許可してからキャッシュを作成

ElastiCacheのトラブルシューティングのページによると、Serverlessはプライマリに6379、読み取り用エンドポイントに6380を使います。クライアントによっては読み取り機能を使わなくても両方へ接続しに行くため、片方だけ開けた状態では、接続確立までに時間がかかる原因になりますので注意してください。ポート範囲で2つまとめて許可します。

# アプリ側(EC2/ECS)のセキュリティグループからだけ受け付けるSGを作る
VPC_ID=vpc-0123456789abcdef0
APP_SG=sg-0aaaaaaaaaaaaaaaa
CACHE_SG=$(aws ec2 create-security-group \
  --group-name valkey-cache-sg --description "ElastiCache Serverless" \
  --vpc-id "$VPC_ID" --query GroupId --output text)
aws ec2 authorize-security-group-ingress --group-id "$CACHE_SG" \
  --ip-permissions "IpProtocol=tcp,FromPort=6379,ToPort=6380,UserIdGroupPairs=[{GroupId=$APP_SG}]"

# Valkey 9系のServerlessキャッシュを作る(上限を付けて請求の暴走を防ぐ)
aws elasticache create-serverless-cache \
  --serverless-cache-name app-cache \
  --engine valkey --major-engine-version 9 \
  --subnet-ids subnet-0aaa1111 subnet-0bbb2222 \
  --security-group-ids "$CACHE_SG" \
  --cache-usage-limits 'DataStorage={Maximum=5,Unit=GB},ECPUPerSecond={Maximum=50000}'

引数の一覧はcreate-serverless-cacheのCLIリファレンスにあります。--cache-usage-limitsは省略できますが、アプリの不具合でキーが増え続けたときに保存量の課金が青天井になるため、上限を置いておくのが安全です。

作成完了の待ち合わせとエンドポイントを取り出すdescribeコマンド

Valkeyサーバーレスキャッシュの作成手順のとおり、作成直後のステータスはCREATINGで、利用可能な状態に変わるまで数分かかります。次のコマンドでステータスと接続先を確認します。

aws elasticache describe-serverless-caches \
  --serverless-cache-name app-cache \
  --query 'ServerlessCaches[0].[Status,Endpoint.Address,Endpoint.Port,ReaderEndpoint.Port]' \
  --output text
# 出力はステータス・アドレス・プライマリのポート・読み取り用ポートの順(作成中はCREATING)

ここで得たアドレスを、アプリの環境変数やSecrets Managerに登録します。ノードベースで作る場合はコマンドがcreate-replication-groupに変わり、ノードタイプやシャード数を自分で決めます。

EC2からvalkey-cliとPythonのredis-pyでTLS接続して読み書きする

キャッシュができたら、まずCLIで疎通を確認し、次にアプリのコードから接続します。ServerlessはTLSが常に有効なので、平文の接続は応答を待ったまま固まります。

Amazon Linux 2023のvalkey-cli導入と–tlsでの疎通確認

valkey-cliによるTLS接続のページでは、Amazon Linux 2023のvalkeyパッケージに含まれるvalkey-cliがTLS対応でビルドされていると説明しています。Serverlessはクラスターモードで動くため、-cを付けてリダイレクトを自動で追わせます。

sudo dnf install valkey -y
valkey-cli --version

# Serverlessはクラスターモード固定なので -c を付ける
valkey-cli -c -h app-cache-xxxxxx.serverless.apne1.cache.amazonaws.com -p 6379 --tls
app-cache-xxxxxx...:6379> SET hello world
OK
app-cache-xxxxxx...:6379> GET hello
"world"

ユーザーグループで認証を設定している場合は、--askpassを付けるとパスワードがシェル履歴に残りません。Redisのredis6パッケージを入れたときは、コマンド名がredis6-cliになります。

redis-pyのRedisClusterでのssl=Trueとレプリカ読み取り設定

アプリ側の接続コードとして示すのは、Pythonのredis-pyを使った例です。Serverlessはクラスタープロトコルに対応したクライアントからしか使えないため、RedisではなくRedisClusterで接続します。redis-pyのClusteringのドキュメントによると、read_from_replicas=Trueで読み取りコマンドをレプリカにも振り分けられます。

# pip install redis
import os
from redis.cluster import RedisCluster

rc = RedisCluster(
    host=os.environ["CACHE_ENDPOINT"],  # describe-serverless-cachesで得たアドレス
    port=6379,
    ssl=True,                 # ServerlessはTLS必須
    read_from_replicas=True,  # 結果整合性で困らない読み取りだけに使う
    decode_responses=True,
    socket_timeout=2,
)

# {user:42} のハッシュタグで関連キーを同じスロットに寄せる
rc.set("session:{user:42}:token", "abc123", ex=1800)
rc.hset("session:{user:42}:profile", mapping={"name": "taro", "plan": "pro"})
print(rc.get("session:{user:42}:token"))
print(rc.hgetall("session:{user:42}:profile"))

レプリカ読み取りを有効にすると、ServerlessはクライアントのいるAZのレプリカへ読み取りを回し、レイテンシが下がります。代わりに、書いた直後の読み取りで古い値が返る可能性を受け入れることになります。在庫数や決済状態のように書いた値をすぐ読み直す処理では、レプリカ読み取りを使わない接続を別に用意してください。JavaやNode.jsなど複数言語で統一したい場合は、AWSとGoogle Cloudが支援するクライアントのValkey GLIDEが選択肢になります。

接続が固まる・CROSSLOTエラーが出るときに確認する3つの原因

接続で詰まる原因は、トラブルシューティングのページでほぼ3つに絞られています。確認する順に並べます。

  1. クライアントがTLSを使っていない:ServerlessはTLSが常に有効で、平文では応答が返らず接続が固まる
  2. VPCとセキュリティグループ:クライアントが同じVPC(またはピアリング先)にいるか、6379と6380の両方が許可されているか
  3. クラスタープロトコル非対応:SELECTのエラーやERR CROSSLOT Keys in request don't hash to the same slotが出たら、クライアントか複数キー操作の書き方を見直す

3つ目のCROSSLOTは、MGETやトランザクション、Luaスクリプトで別スロットのキーを同時に触ったときに出ます。前節のコードのように{user:42}のハッシュタグでキーを同じスロットに寄せる方法で解消可能です。クラスターモードを使えない既存アプリは、Serverlessではなくクラスターモード無効のノードベースで作る必要があります。

自前RedisからElastiCacheへ移すときのRDB取り込みと互換性確認

EC2やオンプレミスでRedisを運用していて、ElastiCacheへ移したい場合の確認点です。データの持ち込み方と、アプリが依存している機能の棚卸しの2段階で進めます。

.rdbファイルをS3経由で取り込むノードベースのシード手順と制約

外部で作成したバックアップでクラスターをシードする手順では、自前Redisで作った.rdbファイルをS3に置き、ElastiCacheに読み取り権限を与えて新しいノードベースのクラスターへ取り込みます。取り込み時にシャード数を指定できるため、単一ノードのRedisからクラスターモード有効の構成へ移る入口にも使えます。

制約は2つです。クラスターモード有効の環境で作った.rdbから、クラスターモード無効のクラスターは作れません。また、取り込むデータ量がノードのメモリを超えるとクラスターはrestore-failedになり、削除して作り直すしかありません。ノードタイプは、元データの量に余裕を持たせて選びます。

Redis 7.4以降・8系の機能に依存していないかを先に棚卸し

ElastiCacheが提供するRedis OSSは7.1まで、Valkeyは7.2.4系から分岐したエンジンです。自前でRedis 7.4以降や8系を動かしている場合、アプリがその版で加わったコマンドやモジュールを使っていないかを先に洗い出します。ハッシュのフィールド単位の有効期限のように、Valkey 9.0で同等の機能が入ったものもあれば、Redis 8で統合されたモジュール群のようにValkey側で対応状況を個別に確かめる必要があるものもあります。

確認の手順は単純です。本番のRedisでINFO commandstatsを取り、実際に呼ばれているコマンドの一覧を作ります。その一覧を移行先のValkeyで1つずつ実行し、未対応のものがあればアプリの改修かRedis Cloudへの移行を検討します。

ElastiCacheを選ぶ条件とEC2自前構築・Redis Cloudへ寄せる場面

最後に、どの経路を選ぶかを言い切ります。判断の軸は「キャッシュとして使うか、主データとして使うか」と「Redis 8系の機能が要るか」の2つです。

ElastiCache Serverless for Valkeyを第一候補とする条件

用途がキャッシュ、セッション、ランキング、レート制限のカウンターで、Redis 7.2相当のコマンドで足りるなら、ElastiCache Serverless for Valkeyを選びます。ノードサイズの見積もりもパッチ当ても不要で、東京で利用を始める場合の固定費は月7ドル台からです。アクセスが一定で大きく、ECPU課金が割高になる段階まで来たら、ノードベースへ切り替えて単価を下げます。

キャッシュの喪失が許されない主データとして使うなら、MemoryDBかValkey 9.0の同期耐久性が候補です。どちらを選ぶかは書き込みレイテンシの要件で決まります。既存システムのキャッシュ層の設計から移行までをまとめて相談したい場合は、一創のインフラ構築(AWS・Google Cloud・Azure)で構成の見直しから支援しています。

Redis 8固有の機能が要る場合と自前構築で失敗しやすい運用負荷

Redis 8系でしか使えない機能に依存しているなら、ElastiCacheは選べません。その場合はRedis Cloudを第一に検討します。AWS Marketplace経由で請求をまとめられ、版の追従もRedis社に任せられるからです。

EC2への自前構築は、版も設定も自由になる代わりに、フェイルオーバー、パッチ、バックアップ、監視をすべて自社で持つことになります。障害時の切り替えを手動で行う体制なら、自前構築は採用しません。また、Redis 8以降をAGPLv3で使う場合は、改変したRedisをネットワーク越しに提供する際のソース公開義務を法務と確認してください。Redisを使わずに済む規模なら、DynamoDBなどのKVS(キーバリューストア)で代替できないかも比べておくと、運用対象を1つ減らせます。

よくある質問

AWSでRedisを使うときに検索の多い質問を5つ選んで答えます。

AWSでRedisを使うときの料金は最低いくらからですか?

東京リージョンのElastiCache Serverless for Valkeyなら、最小課金の100MBを1か月保存して約7.37ドルからです。これにECPUの処理量課金が100万あたり0.0027ドル加わります。Redis OSSエンジンを選ぶと最小課金が1GBになり、保存分だけで約110ドルかかります。ノードベースのcache.t4g.microなら、Valkeyで0.020ドル毎時、1か月約14.6ドルです。

ElastiCacheでRedis 8系は使えますか?

2026年10月時点では使えません。ElastiCacheのRedis OSSエンジンは7.1までで、それ以降の版はValkeyとして提供されています。Valkeyは9.1まで出ており、Redis 7.2相当のコマンドに加えて独自の機能拡張を備えたエンジンです。Redis 8系の機能が必須なら、AWS Marketplace経由のRedis CloudかEC2への自前構築を選びます。

既存のRedisクライアントライブラリはValkeyでもそのまま使えますか?

Redis OSS 7.2相当までのコマンドを使うクライアントであれば、多くはそのまま接続できます。本記事のredis-pyの例も、接続先がValkeyのServerlessキャッシュです。ただしServerlessはTLS必須かつクラスターモード固定なので、TLSとクラスタープロトコルに対応したクライアント設定が必要です。単一ノード用のRedisクラスでは接続できません。

ローカルPCからElastiCacheに直接接続できますか?

VPCエンドポイントのキャッシュには、VPC外のローカルPCから直接接続できません。同じVPC内の踏み台EC2を経由するか、VPNで接続します。Valkey 9.0以降のServerlessにはパブリックエンドポイントの選択肢が加わりましたが、IAM認証とTLS 1.3が必須です。開発用途なら、ローカルにValkeyやRedisのコンテナを立てるほうが手軽です。

ElastiCacheとUpstashのどちらを選べばよいですか?

アプリがAWSのVPC内で動いているならElastiCacheを選びます。同じVPC内で通信が閉じるため、通信のレイテンシも低く抑えられる構成です。Vercelやエッジ環境など、VPCの外からHTTPで呼び出したい場合はUpstashが向きます。Upstashの料金と使い方はUpstashとは?サーバーレスRedisの料金・無料枠と使い方で解説しています。

関連記事

お気に入りに入れた記事の一覧

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.09.05 コラム eKYCとは?方式の違いと2027年4月の犯収法改正で変わる本人確認要件
  2. 2026.10.03 テックブログ AWS Snowconeとは:サービス終了後の現状とDataSync・Greengrassへの移行手順【2026年版】
  3. 2026.10.03 テックブログ foliumとは:Pythonで地図を作る使い方・タイルの注意点・1.0候補版の変更点【2026年版】
  4. 2026.10.03 コラム ワークフローシステムの通知機能の設計:承認を止めないリマインド・催促と宛先の絞り方
  5. 2026.10.02 コラム ワークフローシステムを無料で使う4つの方法|無料プランとOSSの制限・有料化の判断

RELATED POSTS 関連記事

目次