Amazon Web Services ブログ

Amazon MemoryDB for Valkeyの開始方法

本記事は 2024 年 10 月 8 日に公開された “Get started with Amazon MemoryDB for Valkey” を翻訳したものです。


2024年10月8日、Amazon MemoryDBValkey バージョン 7.2 のサポートを発表しました。これは、Amazon MemoryDB for Redis OSS と比較してインスタンス時間あたりの料金が 30% 低くなっています。MemoryDB for Valkey では、月間 10 TB までのデータ書き込みに対して料金は発生せず、10 TB を超えるデータ書き込みに対しては 1 GB あたり 0.04 ドルで課金されます。Valkey は、Linux Foundation が管理し、40 社以上の企業が支援するオープンソースの高性能キーバリューデータストアです。Valkey は Redis OSS の代替として、長年 Redis OSS のコントリビューターおよびメンテナーを務めてきた開発者によって開発されました。2024 年 3 月のプロジェクト開始以来、急速に採用が進んでいます。AWS は Valkey プロジェクトに積極的に貢献しています。この発表により、お客様はオープンソース技術に基づいて構築されたフルマネージド型のエクスペリエンスを享受しつつ、ElastiCache が提供してきた 13 年以上の運用の卓越性、セキュリティ、信頼性を活用できるようになります。

この記事では、MemoryDB for Valkey の概要、その利点、そして MemoryDB for Redis OSS データベースを MemoryDB for Valkey データベースにアップグレードする方法について説明します。

MemoryDB for Valkey の概要

Amazon MemoryDB は、Valkey および Redis OSS 互換の、耐久性のある、インメモリデータベースサービスで、超高速のパフォーマンスを提供します。MemoryDB は、分散トランザクションログを使用して複数のアベイラビリティーゾーン (AZ) にわたってデータを耐久性をもって保存し、高速なフェイルオーバー、データベースの復旧、ノードの再起動を可能にします。MemoryDB for Valkey は、ユーザーセッションデータ、メッセージストリーミング、ゲームのリーダーボードなど、耐久性のあるストレージと超高速のパフォーマンスを必要とするアプリケーションに使用できます。MemoryDB for Valkey は、AWS 上の一般的なベクトルデータベースの中で、最高の再現率で最速のベクトル検索パフォーマンスを提供します。MemoryDB は高可用性を提供し、データ階層化によってより低コストでスケーリングできます。AWS は MemoryDB を通じて Valkey をマネージドサービスとして提供することで、お客様自身で Valkey を管理する運用負荷なしに、その広範な機能を活用できるようにします。MemoryDB for Valkey は現在、MemoryDB がサポートされているすべての AWS リージョンで利用可能です。

MemoryDB for Valkey の利点

  • 低価格: MemoryDB for Valkey では、MemoryDB for Redis OSS と比較してインスタンス時間あたりの価格が 30% 低く、月間 10 TB までのデータ書き込み料金が無料になり、コストを最適化できます。10 TB を超えるデータ書き込みについては、MemoryDB for Redis OSS と比較して 80% 低い 1 GB あたり 0.04 ドルの価格設定となっています。
  • パフォーマンス: MemoryDB は、読み取りにマイクロ秒単位の応答時間、書き込みに一桁ミリ秒の応答時間を必要とする高性能アプリケーション向けに構築されています。
  • 運用の卓越性: MemoryDB for Valkey は、オープンソース技術を基盤とし、AWS のセキュリティ、運用の卓越性、99.99% の可用性、信頼性を活用したフルマネージド型のエクスペリエンスを提供します。
  • API 互換性: MemoryDB for Valkey は Redis OSS の API とデータ形式と互換性があり、顧客はコードの書き直しやアーキテクチャの変更なしにアプリケーションを移行できます。
  • ダウンタイムゼロの移行: 既存の MemoryDB for Redis OSS ユーザーは、ダウンタイムなしで MemoryDB for Valkey に迅速にアップグレードできます。
  • 継続的なイノベーション: AWS の Valkey サポートへのコミットメントにより、顧客は安定したソリューションを採用するだけでなく、将来の成長とイノベーションに向けた準備も整えることができます。Valkey コミュニティがプロジェクトの開発と強化を続けるにつれ、AWS の顧客は継続的な改善と新機能の恩恵を受け、アプリケーションの競争力を維持できます。AWS も Valkey に積極的に貢献しており、詳細は Amazon ElastiCache と Amazon MemoryDB の Valkey サポートを発表 の記事でご覧いただけます。

ソリューションの概要

わずか数ステップで MemoryDB for Valkey を始めることができます:

  1. MemoryDB for Valkey データベースを作成します。
  2. Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを作成します。
  3. valkey-cli ユーティリティをダウンロードしてセットアップします。
  4. アプリケーションからデータベースに接続します。

以下のセクションでこれらのステップを順を追って説明します。その後、データベースでの基本的な操作の実行方法を示します。また、MemoryDB for Redis OSS から MemoryDB for Valkey へのアップグレード方法についても説明します。

MemoryDB for Valkey データベースの作成

Amazon MemoryDB for Valkey データベースは、AWS マネジメントコンソール、AWS Command Line Interface (AWS CLI)、または MemoryDB API を使用して作成できます。以下のコードは、AWS CLI を使用して MemoryDB for Valkey データベースを作成する例です。MemoryDB で Valkey リソースを使用するには、CLI のバージョンが最新であることを確認してください。

aws memorydb create-cluster \ 
    --cluster-name memorydb-valkey-cluster \ 
    --node-type db.r6g.large \ 
    --acl-name open-access \ 
    --subnet-group-name basic-subnet-group \ 
    --engine valkey \ 
    --tls-enabled \ 
    --region us-east-1

describe-clusters コマンドを使用して、MemoryDB データベースの作成プロセスのステータスを確認できます。

aws memorydb describe-clusters \ 
  --cluster-name memorydb-valkey-cluster \ 
  --region us-east-1 
{
    "Clusters": [ 
        {
            "Name": "memorydb-valkey-cluster",
            "Status": "available",
            "NumberOfShards": 1,
            "AvailabilityMode": "MultiAZ",
            "ClusterEndpoint": {
                "Address": "clustercfg.memorydb-valkey-cluster.xxx.amazonaws.com",
                "Port": 6379 
            },
            "NodeType": "db.r6g.large",
            "Engine": "valkey",
            "EngineVersion": "7.2",
            "EnginePatchVersion": "7.2.6",
            "ParameterGroupName": "default.memorydb-valkey7",
            "ParameterGroupStatus": "in-sync",
            "SubnetGroupName": "basic-subnet-group",
            "TLSEnabled": true,
            "ARN": "arn:aws:memorydb:xxx:xxx:cluster/memorydb-valkey-cluster",
            "SnapshotRetentionLimit": 0,
            "MaintenanceWindow": "fri:05:00-fri:06:00",
            "SnapshotWindow": "03:00-04:00",
            "ACLName": "open-access",
            "AutoMinorVersionUpgrade": true,
            "DataTiering": "false"
        }
    ] 
}

MemoryDB for Valkey データベースへの接続のための EC2 セットアップ

MemoryDB には、同じ VPC 内の EC2 インスタンスから、または VPC ピアリングを使用して異なる VPC 内の EC2 インスタンスからアクセスできます。EC2 インスタンスの作成手順については、Amazon EC2 の開始方法をご覧ください。

MemoryDB for Valkey データベースは、ポート 6379 を使用します。EC2 インスタンスから正常に接続し、Valkey コマンドを実行するためには、セキュリティグループがこのポートへのアクセスを必要に応じて許可している必要があります。

valkey-cli ユーティリティのダウンロードとセットアップ

EC2 インスタンスに接続し、以下のコマンドを実行して valkey-cli ユーティリティをダウンロードします。

sudo yum install gcc jemalloc-devel openssl-devel tcl tcl-devel -y 
wget https://github.com/valkey-io/valkey/archive/refs/tags/7.2.7.tar.gz 
tar xvzf 7.2.7.tar.gz 
cd valkey-7.2.7/ 
make BUILD_TLS=yes install

Valkey エンジンに接続してコマンドを実行するための valkey-cli の使用方法の詳細な手順については、Valkey CLI を参照してください。

MemoryDB for Valkey データベースへの接続

MemoryDB for Valkey データベースに接続するには、AWS CLI コマンド describe-clusters を使用して新しいデータベースのエンドポイントを取得します。以下のように memorydb クラスターの設定エンドポイントを見つけることができます:

aws memorydb describe-clusters \ 
--cluster-name memorydb-valkey-cluster \ 
--region us-east-1 
            "ClusterEndpoint": {
                "Address": "clustercfg.memorydb-valkey-cluster.xxx.amazonaws.com",
                "Port": 6379 
            }

valkey-cli ユーティリティを使用して MemoryDB for Valkey データベースに接続する

valkey-cli -h clustercfg.memorydb-valkey-cluster.xxx.amazonaws.com -p 6379 -c --tls
  • -h = ホスト名
  • -p = ポート
  • -c = クラスターモード
  • –tls = TLS 有効クラスター

これで、MemoryDB for Valkey データベースに対して基本的な GET および SET 操作を実行する準備が整いました。以下は、Valkey において HASH オブジェクトを作成するための HSET 操作の例です。Valkey のハッシュは、フィールドと値のペアのコレクションを格納するために使用されるデータ構造です。ハッシュは、複数の属性 (名前、年齢、メールアドレスなど) を持つユーザープロファイルのように、オブジェクトを表現したり、関連データを単一のエンティティに格納したりする必要がある場合に便利です。

clustercfg.memorydb-valkey-cluster.xxx.amazonaws.com:6379> hset car:1 make ferrari model sf90spider year 2024 engine "4.0 L V8" horsepower 769hp transmission "8-speed auto" price 580000 
(integer) 7 
clustercfg.memorydb-valkey-cluster.xxx.amazonaws.com:6379>

前述の操作により、make、model、year、engine、horsepower、transmission、price などの属性を持つ HASH オブジェクト car:1 が作成されます。
これで、HMGET または HGETALL 操作を使用して、個別または全てのフィールドと値のペアを取得できます。

clustercfg.memorydb-valkey-cluster.xxx.amazonaws.com:6379> HMGET car:1 make model price 
1) "ferrari"
2) "sf90spider"
3) "580000"
clustercfg.memorydb-valkey-cluster.xxx.amazonaws.com:6379>

MemoryDB for Redis OSS から MemoryDB for Valkey へのアップグレード

わずか数回のクリックで、MemoryDB for Redis OSS の既存ユーザーはダウンタイムなしで MemoryDB for Valkey にアップグレードできます。以下の手順を実行してください:

  1. MemoryDB コンソールで、ナビゲーションペインの「クラスター」を選択します。
  2. アップグレードの準備ができている MemoryDB for Redis OSS クラスターを選択します。
  3. 「修正」を選択します。
  4. 「エンジン」で、Valkey を選択します。「変更をプレビュー」を選択します。

    変更の概要を確認できます。
  5. 「変更を保存」を選択して、エンジンを Redis OSS から Valkey に変更することを確認します。「クラスターは正常に変更されました。」という通知が表示されます。

既存の MemoryDB for Redis OSS データベースは Updating のステータスになります。

アップグレードが成功すると、memorydb-redisoss-cluster は新しいエンジンタイプとして Valkey を表示し、ステータスは Available になります。

アプリケーションへの影響を最小限に抑えながら、エンジンを Redis OSS から Valkey にアップグレードしました。

クリーンアップ

最小権限の原則を維持し、将来の料金発生を避けるため、このポストの一部として作成したリソースを削除してください。MemoryDB クラスター (詳細については クラスターの削除 を参照) と EC2 インスタンス (delete-instance) を削除してください。

まとめ

MemoryDB への Valkey サポートの追加は、アプリケーション向けの堅牢なオープンソースソリューションを提供するという AWS のコミットメントにおいて、大きな前進を表しています。まだサインアップしていない場合は、MemoryDB ページで「開始する」を選択し、サインアッププロセスを完了できます。サインアップ後、Valkey については MemoryDB の使用開始 ページを参照してください。その後、MemoryDB コンソール、AWS CLI、または MemoryDB API を使用して、数分でデータベースクラスターを作成できます。

この記事の翻訳は Solutions Architect の堤 勇人が担当しました。

著者について

Madelyn Olson は Valkey プロジェクトのメンテナーであり、Amazon ElastiCache と Amazon MemoryDB のプリンシパルソフトウェア開発エンジニアとして、Valkey エンジンの安全で高信頼性の機能の構築に注力しています。プライベートでは、長時間のハイキングや穏やかなサイクリングを通じて、太平洋岸北西部の自然の美しさを楽しんでいます。

Goumi Viswanathan は、Amazon インメモリデータベースチームのシニアプロダクトマネージャーです。12 年以上の製品開発経験を持ち、データベースソリューションを提供するクロスファンクショナルチームのリーダーとして活躍しています。仕事以外では、旅行やアウトドア活動を楽しんでいます。

Siva Karuturi は、テキサス州ダラスを拠点とするインメモリデータベースのワールドワイド・スペシャリスト・ソリューションアーキテクトです。Siva はさまざまなデータベース技術 (リレーショナルと NoSQL の両方) を専門とし、複雑なアーキテクチャの実装を支援し、クラウドコンピューティング、ガバナンス、セキュリティ、アーキテクチャ、高可用性、災害復旧、パフォーマンス向上を含むインメモリデータベースおよび分析ソリューションのリーダーシップを提供しています。仕事以外では、アンソニー・ボーデイン風に旅行や様々な料理を味わうことが好きです!