オープンソース

OSSのRedisに代わるデータベース〜Valkey〜

ValkeyとはインメモリデータベースのOSSです。インメモリデータベースとは、メモリ上でデータの操作をする、RDBMSよりも高速に動作するデータベースの一種です。OSSのインメモリデータベースとしては、Redisがよく利用されていました。しかし、Redisのライセンス変更により、商用での利用が難しくなりました。今回は、Redisに代わるOSSのデータベースValkeyについて紹介します。

目次

Valkeyとは

Valkeyは、次世代のインメモリデータベースとして注目を集めるオープンソースソフトウェアです。もともとRedisのソースコードから派生し、現在はLinux Foundationのもとで開発が進められています。AmazonやGoogleをはじめとする大手企業もプロジェクトに参加し、AWSでも採用が予定されています。高い信頼性と将来性を備えたValkeyは、Redisの代替を超える選択肢として今後ますます注目されています。

また、Valkeyはインメモリデータベースでありながらも、ディスクへのデータ保存の機構を備えています。この機能があることで、ジョブやメッセージのキューを保存するような用途でも利用されています。

Valkeyで解決できるRedis利用の課題

Redisは高速なインメモリデータベースとして多くのシステムで利用されていますが、近年のライセンス変更をきっかけに、将来の運用やコスト、利用条件に不安を感じる企業が増えています。これまでOSSとして自由に使えていたRedisが、今後も同じ前提で使い続けられるのか判断が難しくなっているのが実情です。

また、すでにRedisを業務システムの中核として利用している場合、「別のソフトウェアに置き換えるとなると移行コストが高いのではないか」「既存アプリケーションへの影響はどの程度あるのか」といった点も、大きな検討課題になります。こうした不安や課題を、実際の運用現場では次のような形で感じているケースが多くあります。

  • 将来の利用条件やコストを見据えた判断が難しい
  • OSSとして長期運用できる選択肢を選びたい
  • 既存環境をできるだけ変えずに移行したい
  • クラウド/オンプレミスのどちらでも柔軟に運用したい

Valkeyは、こうしたRedis利用に関する課題を解決するために生まれた、Redis互換を重視したOSSのインメモリデータベースです。Redisとの互換性を重視しながら、ライセンスリスクを回避し、長期的に安心して利用できる点が評価されています。

次の章では、ValkeyがなぜRedisの代替として注目されているのか、互換性や運用面の特長を中心に解説します。

RedisとValkey

Redisは、データベースソフトウェアとしてよく利用されている人気のソフトウェアの一つでした。しかし、2024年3月にリリースされたRedis v7.4以降、Apache 2.0ライセンスから、RSALv2(Redis Source Available License)もしくはSSPLv1(Server Side Public License)のデュアルライセンスへライセンス形態を移行することを発表しました。

このライセンスでは、ソフトウェアを商品化できないことや、ソースコードをすべて公開する必要があるなど、クラウドサービスなどで提供する場合は制限が適用されるケースが出てきます。つまり、Redisは厳密にはOSSではなくなり、現在はクラウドサービス等で商用利用することが難しくなっています。こうしたRedisの流れを受けて、ライセンス変更前のRedisのソースコードをもとにして新たに開発されたのがValkeyです。

後述でも解説しますが、ValkeyはRedisとの親和性が高く、Redisとほぼ同じように利用することができます。ただし、両者は別のプロジェクトで開発が進められているため、今後も同じように使い続けることができるかどうかは分かりません。

Valkeyの特徴

Valkeyには、以下の特徴があります。

Redisとの親和性

  • クラスタリングの親和性

    Valkeyを調査した結果、Valkeyのクラスタリングでは、Redisと同様の方式・設定で動作することがわかりました。現在のところ、メリット・デメリット含め全く同じであり、Redisを利用していたユーザは今までと同じように利用が可能です。

  • プログラム言語との親和性

    PHPやPython3では、Redisを利用することが可能ですが、弊社で調査した結果Redisのクライアントを使って同じようにValkeyの操作が可能であることがわかりました。

その他、Valkeyにもデータ永続化機能があるため、ValkeyはRedisと同じように利用することが可能です。しかし、今後は別プロジェクトで開発が進むため、今後も全く同じように利用できる保証はありません。

クラスタ構成での動作

Valkeyは、Redisと同様にクラスタ構成で動作することができます。クラスタ構成にすることで、運用を効率化することができます。Valkeyのクラスタ構成には次の3種類があります。

Replication

Replication方式のクラスタは、複数のValkeyインスタンスがプライマリ・セカンダリの役割を持ち、プライマリからセカンダリに対してデータが同期される方式です。セカンダリはマスタからのデータ同期のみ受付け、基本的に読み込み専用として動作します。マスタ・セカンダリの自動切り替えの機能はありません。このため、Replication方式はデータの冗長化や読み込み処理の負荷分散として利用することを主な目的としています。

Sentinel

Sentinel方式は、Replication方式にフェイルオーバ機能を付与したものです。この方式はプライマリ・セカンダリのインスタンスの他に、最低3台からなるSentinelという死活監視用インスタンスを必要とします。Sentinel方式では、3台のSentinelインスタンスが投票してプライマリインスタンスを決定するため、過半数が獲得できない2台や偶数構成では上手く動作しません。

つまりこの構成の場合、最低5台のValkeyが必要になります。なお、この構成ではプライマリとしての役割はフェイルオーバされますが、接続を待ち受けるIPアドレスを移動するVRRPのような機能はありません。このため、フェイルオーバ時にスクリプト等で仮想IPアドレスを移動させるなどのケアが必要です。Sentinelの設定は、上記のReplicationの設定に加えて、3 台のSentinelインスタンスを追加することで実装できます。

Cluster

Cluster方式は、プライマリを複数台動作させることができる構成です。データは複数のValkeyにシャードとして分散して保管されます。シャード単位でデータのレプリケーションが行われるため、1つのインスタンスが破損した場合でも、他のインスタンス群でサービスを継続することができます。構成として、プライマリ3台・セカンダリ3台の計6台が最低でも必要になります。

データ永続化

Valkeyは、インメモリデータベースですが、データの永続化の仕組みが存在します。永続化の仕組みを利用することで、ハードウェア障害時にディスクからの復元よりも素早くデータを復旧することができます。Valkeyのデータ永続化には、主に2つの方法があります。

RDB(Redis Database) AOF(Append Only File)
説明 スナップショットを取得し、ディスクにデータを保存する方式 すべての書き込み操作をログファイルに追記しデータの永続化を実現する方式
特徴
  • バックアップやリカバリに適している
  • RDBよりもリアルタイムに、データの保存を行うことができる
  • 堅牢性が高い
  • 耐久性が高い

この特徴から、AOFの方が、優れているように見えますが、ディスク書き込みが多いと、処理に時間がかかってしまいパフォーマンスが低下するため、サービスの特性によってRDBとAOFを使い分ける必要があります。またRDBとAOFは併用することもできるため、それぞれの利点を活かすことでデータ損失のリスクを最小限に抑えることが可能です。

用途に合わせたデータ型が存在

Valkeyには、主に5つのデータ型があり、それぞれ異なる使い方と用途があります。用途に合わせてデータ型を変更して利用することが可能です。

String型 説明 単一の文字列・数値を保存するための型
用途
  • ユーザー情報、商品情報などの単一の値をキャッシュとして保存
  • ページビュー数、いいね数などのカウンターの実装
  • アプリケーションの設定値や環境変数の保存
List型 説明 複数の文字列値を順序付きリストとして保存する型
用途
  • 非同期タスクを管理
  • ソーシャルメディアのタイムラインやアクティビティフィードの管理
  • 最近閲覧した商品や履歴の保存
Hash型 説明 フィールドと値のペアを持つオブジェクトを保存する型
用途
  • ユーザー情報、商品情報などの構造化されたデータをキャッシュ
  • リアルタイムの統計情報や分析結果の保存
  • アプリケーションの設定情報や環境変数をグループ化して保存
Set型 説明 一意な文字列値の集合を保存するための型
用途
  • IPアドレス、メールアドレスなどの重複を排除
  • 記事のタグ、ユーザーの興味関心などのタグ情報の管理
  • ユニークビジター数、オンラインユーザー数などの集計
Sorted Set型 説明 スコアと関連付けられた一意な文字列値の集合を保存するための型
用途
  • ゲームのハイスコア、商品の人気ランキングなどの管理
  • 優先度に基づいたタスクやメッセージの管理
  • 地理的な位置情報に基づいたクエリや分析

デージーネットの取り組み

デージーネットでは、Valkeyを活用した高可用性データベースシステムの構築・保守を行っています。データベースの二重化や冗長化にも対応し、障害時でも止まらない安定運用を実現します。また、Valkeyだけでなく、RDBMSなどさまざまなOSSデータベースを組み合わせ、お客様の要件・環境に最適な構成をご提案します。システムの設計段階から運用まで、一貫した支援をご希望の方はぜひご相談ください。

Valkeyを使用したシステム構築サービスを提供したお客様には、導入後支援サービスとして、Open Smart Assistanceを提供しています。これは、Valkey単体のサポートではなく、Linuxなどを含むシステム全体に対するサポートです。Open Smart Assistanceでは、Valkeyにバグがあった場合には、回避方法の調査、コミュニティへの連絡による改善促進といったサポートを受けることができます。

「情報の一覧」

Valkey調査報告書

Valkey無料資料

Valkeyとは、オープンソースのインメモリデータベースなどと呼ばれる分野のDBです。ライセンスが更新され、商用での利用が難しくなったRedisに代わるデータベースとして注目されています。本ドキュメントはValkeyのインストールの実行や操作方法などについて、調査した内容をまとめたものです。

社内サーバインフラの構築

社内サーバインフラの構築

デージーネットが提供するオープンソースソフトウェア(OSS)を利用した社内サーバインフラ構築についてご紹介します。社内サーバインフラに対するご要望は様々です。ご要望に沿った社内サーバインフラの構築を実現します。

デモのお申込み

もっと使い方が知りたい方へ
操作方法や操作性をデモにてご確認いただけます。使い方のイメージを把握したい、使えるか判断したい場合にご活用下さい。デモをご希望の方は、下記よりお申込みいただけます。

デモをご希望の方

デモの申し込みイメージ

t

OSSのRedisに代わるデータベース〜Valkey〜の先頭へ