これは
以下のようにElastiCache Redisのバージョンを上げろという警告がAWSから出たので、その対応のメモ。
Redis OSS のバージョン 4 と 5 は、コミュニティですでに 2022 年にサポート終了を迎えています。
これらのバージョンの Amazon ElastiCache 標準サポートは、2026 年 1 月 31 日に終了します。
お客様にアップグレード戦略を計画するのに十分な時間をとっていただくため、この通知をお送りしています。 Valkey 用 Amazon ElastiCache バージョン 8 以降にアップグレードすることをお勧めします。または、 Amazon ElastiCache for Redis OSS バージョン 6 またはそれ以降のバージョンにアップグレードすることもできます。
使用中のElastiCache Redisバージョンは 5.0.6 だったので移行する必要があった。
対応
ElastiCache Redis 5.0.6 -> Valkey 7.2へアップグレードを実行
事前に調べたこと
Valkey or Redis?
バージョンアップの先の選択肢として、Redisのままバージョンを上げるかValkeyにするかの2つがある。両者の違いをChatGPTさんに調べてもらった。
| 観点 | ElastiCache for Valkey | ElastiCache for Redis(OSS) |
|---|---|---|
| 価格 | ServerlessでRedis比 約33%安、ノード型で約20%安(AWS発表) | Valkey比で高め |
| 互換性 | Redis OSSとAPI/データ互換。既存コード変更なしが原則。 | 既存通り |
| 新機能の追随 | ValkeyはRedis 7.2相当から派生・独自進化(I/Oマルチスレッド等 8.xで強化)。一方でRedis 8/8.2の新機能に未対応領域の指摘あり | Redis本流の最新機能が利用可能 |
| 性能 | AWS検証ではRedis 7.1とValkey 7.2で速度差ほぼなし。Valkey 8.1でメモリ効率改善→ダウンサイジングで総コスト最大60%削減試算 | 同等〜用途次第 |
| サーバレス | あり(Valkey Serverless) | あり(Redis Serverlessもあるが価格差に留意) |
| サポート/EOL | OSSとしてLinux Foundation配下。AWSがマネージド提供。 | 4/5系は標準サポート2026-01-31終了→延長サポート最大3年→2029-01-31でValkeyへ自動移行 |
| 将来性(ライセンス) | BSD系OSS・ベンダーニュートラル路線を強調 | Redis本体はライセンス変更で商用提供色が強化。ElastiCacheは「Redis OSS」系を提供 |
| 移行難度 | ゼロダウンタイム移行手順をAWSが提供(同一クライアントで切替可) | 同系内のメジャーアップグレードは通常手順 |
| バージョン選択 | Valkey 7.2以降→8.x系あり(ElastiCache対応状況に依存) | Redis 7.1等(ElastiCacheのサポート表に依存) |
Redis特有の機能や最新の機能使いたいなどがなければ、Valkeyを選ぶで問題なさそう。
アプリ内のRedis用途調査
改めてRedisを使用しているアプリで、どのような用途で利用されているのかを確認した。
以下の点を確認しておく。
| 項目 | 内容 | 補足・影響 |
|---|---|---|
| 特定コマンドの制限/利用不可 | Amazon ElastiCache for Valkey(AWSマネージド上)では、Redis系でも使えていた一部コマンドが 制限・無効化されている。 (AWS ドキュメント) | たとえば ACL SETUSER, ACL LOAD, BGREWRITEAOF, BGSAVE などが「利用できない」または制限対象として挙げられています。 (AWS ドキュメント) |
| 内部挙動の互換性差異 | Valkey 7.2 系では、Redis OSS 7.1 や 7.0 との間で挙動が変わった点が明記されています。 (AWS ドキュメント) | 例として:「Blocked Stream コマンドが解放された際のエラーコードが変わる(-NOGROUP/-WRONGTYPE になる代わりに -UNBLOCKED だった)」など。 (AWS ドキュメント) |
| モジュール・非標準機能・プラグイン | Redis OSS ではサードパーティモジュール(例:RedisGears、RedisAI、RedisSearchなど)を利用しているケースがありますが、Valkey環境/AWS ElastiCache for Valkey では 同等のモジュールサポートが保証されていないという注意書きが散見されます。 (Medium) | 特に「Redis Enterprise/Redis Labs」提供の商用モジュールとの互換性には確認が要ります。 |
| クライアントサイド機能/キャッシュ追跡(CLIENT TRACKING) | ある環境(特にサーバーレス用途)で、Redis OSSの機能(たとえば CLIENT TRACKING など)に対して制限が報告されています。 (Repost) |
例えば「ElastiCache Serverless環境ではCLIENT TRACKINGが動かなかった」という報告あり。Valkey移行時も類似のクライアント機能に影響が出る可能性があります。 |
| クラスタモード有効化/クラスタ設定の制限 | ドキュメントに「Valkey/Redis OSS (Cluster Mode Enabled) では一部リミット、操作制限あり」 と記載されています。 (AWS ドキュメント) | たとえば「手動でレプリカをプライマリに昇格できない」など。 |
以下の項目をチェック
-
アプリケーションで使っている Redisコマンド一覧を洗い出す
EVAL, EVALSHA, CLIENT TRACKING, MODULE … 等、あまり一般的でないコマンドを使っていないか。 -
利用している Redisモジュール(検索機能・AI連携・拡張コマンド)の有無を確認
-
スクリプト・トランザクション・Pub/Sub の挙動が Valkey でも同じように動くか(特に Lua スクリプト内部でキー操作しているもの)
-
クラスタ/シャード構成を使っている場合、Valkey側での シャード数/ノード制限/レプリカ構成が現行構成と乖離しないか
-
テスト環境で「動かない・遅い・エラーになる」ケースを早期に発見するため、特定コマンドの動作テスト実施
-
ドキュメントに記載の互換性差分を事前に参照 → 例えば上述の「Blocked Stream コマンドのエラーコード違い」などを検証
利用中の範囲では影響なさそうだったので、Valkeyへ移行する。
ステージングでの動作確認も、可能であれば合わせて行う。
移行前に、Redisキャッシュのスナップショットを取っておく。
移行手順
コンソールから簡単に行えた。
Redis OSS キャッシュ一覧を表示し、アップグレードするキャッシュを選択しValkeyにアップグレードをクリックする。
Valkeyのバージョンとパラメータグループを選択し、アップグレード。
しばらく待つと、Valkeyキャッシュに移行された。

