目的
.NET Core MVCアプリケーションのセッション管理をRedisに委譲し、複数サーバでのセッション共有を可能にしたい。
オンプレミス環境とサーバレス環境の両方で動作するセッション管理の仕組みを構築する。
課題
Redis はバージョン7.4以降、OSS(オープンソースソフトウェア)ではなくなった。
7.4以降を「Redis Community Edition」と名称変更。
一般ユーザは引き続き無償利用可能だが、AWSなどクラウドベンダーでは利用できなくなった。
AWSやGCPでは、
Redisをフォークしたインメモリデータベース「Valkey」が使われ始めている。
(GCPではまだプレビュー版を公開している状況。)
AWSにはどんなサービスがあるの
・Amazon MemoryDB
データは複数のアベイラビリティーゾーンにまたがって永続的に保存されます。
ゲームのリーダーボードなど、高速な読み書きとデータの永続性が求められるユースケースに適している。
・Amazon ElastiCache
主にキャッシュ用途に設計されており、パフォーマンスを重視しています。
セッションストア、リアルタイム分析など、高速なデータアクセスが求められるユースケースに適している。
今回は、データが揮発してもよい用途なので、ElastiCacheの方を採択。
AWS 費用感
▼Amazon ElastiCache
TOKYOリージョン(2025-03-24)
・Valkey
保存されたデータ USD 0.101 / GB-時
ElastiCache Processing Units (ECPU) USD 0.0027 / 100 万 ECPU
・Memcached
保存されたデータ USD 0.125 / GB-時
ElastiCache Processing Units (ECPU) USD 0.0034 / 100 万 ECPU
・Redis OSS
保存されたデータ USD 0.151 / GB-hour
ElastiCache Processing Units (ECPUs) USD 0.0041 / million ECPUs
▼Amazon MemoryDB
・Valkey
db.r7g.large USD 0.2597
・Redis OSS
db.r7g.large USD 0.371
性能・機能
・Valkey
Redisとの互換性を維持。
Valkey7はRedis7.2.4をフォークしたもの。
Valkey8はRedis7.2との互換性を保ちつつ、性能向上や機能強化が盛り込まれている。
・Memcached
マルチスレッドで動作。CPUのコア数を上げれば性能向上。
シンプルなキー/バリュー型のデータ構造のみをサポート。
・Redis OSS
シングルスレッドで動作。
多機能・高機能。
GCPにはどんなサービスがあるの
GCP費用感
TOKYOリージョン(2025-03-24)
・Memorystore for Valkey
shared-core-nano 1.4 GB $0.0408
※まだプレビュー版しか提供していない。
・Memorystore for Memcached
vCPU $0.064($ per vCPU per hr)
Node ≤ 4 GB $0.0056($ per GB per hr)
・Memorystore for Redis
Basic M1 (1 to 4 GB) $0.065
性能・機能
・Memorystore for Valkey
Redis 7.2と完全互換(既存のRedisクライアントで利用可能)
・Memcached
マルチスレッドで動作。CPUのコア数を上げれば性能向上。
シンプルなキー/バリュー型のデータ構造のみをサポート。
・Redis OSS
シングルスレッドで動作。
多機能・高機能。
所感
AWSの方がValkey版のリリースが早く、費用も安い様子。
AWS、GCPともに、Redis 7.2と互換性が高い。
なので、オンプレ版もRedis 7.2を使うことにする。
後日談
Redis 7.2に合わせてプログラムを作成し、
Valkey 7.2.8、および8.0.2で動作確認したところプログラムや設定の変更は必要なく動作した。
AWSとGCPはValkey 7.2、および8.0に対応しているので、性能を意識した場合、Valkey 8.0 を採用するとよいだろう。
参考
・公式ドキュメント[[Valkey との主なエンジンバージョン動作と互換性の違い]]
https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/dg/VersionManagementConsiderations-valkey.html
-Valkey 7.2 には Redis からバージョン 7.2.4 OSSまでのすべての変更が含まれています。
-Valkey 7.2 と Redis 7.1 (または 7.0) OSS の間で、重大な動作変更が発生する可能性があります。