Redisとは
Redisは、Redis Ltd.が開発する、ネットワーク接続された永続化可能な
インメモリデータベースです。連想配列(キー・バリュー)、リスト、セットなど、多様な
データ構造を扱える
NoSQLデータベースとして広く利用されています。ソースアベイラブルな
ライセンス形態を採用しており、その柔軟性と高性能から多くの開発者に支持されています。
Redisの概要
Redisは「REmote DIctionary Server」の略称であり、その名の通り、リモートからアクセス可能な辞書型データストアとして機能します。DB-Engines.comのランキングでは、キー・バリュー型データベースとして高い人気を誇り、
NoSQLデータベースの中でも特に注目されています。また、ユーザーレビューによる満足度や市場でのプレゼンスにおいても高い評価を得ており、コンテナ環境での利用においてもトップクラスの人気を誇ります。
Redisの歴史
Redisの歴史は、2009年2月にSalvatore Sanfilippoが
Tclでプロトタイプを実装したことから始まりました。その後、
C言語で実装し直され、最初のβ版がリリースされました。
VMwareやPivotal Softwareといった企業からのスポンサーシップを経て、
2015年からは開発者自身が設立したRedis Labsがスポンサーとなりました。2021年にはRedis Ltd.に社名を変更し、現在に至ります。
2024年3月、Redisは
ライセンスを三条項BSD
ライセンスからソースアベイラブルなデュアル
ライセンスに変更しました。この変更に伴い、Linux Foundationは「Valkey」という名前でフォークを作成し、コミュニティによるオープンソース版の開発が継続されることになりました。
リリース
Redisは2009年3月にバージョン1.0がリリースされて以来、数々のバージョンアップを重ねてきました。2018年にはRedis Streamが導入され、2020年にはACLサポートが拡大するなど、機能拡張が積極的に行われています。最新バージョンでは新コマンドやオプションが追加され、さらなる進化を遂げています。
主なリリース履歴
2009年03月 - Redis 1.0
2010年09月 - Redis 2.0
2015年04月 - Redis 3.0
2017年04月 - Redis 4.0
2018年10月 - Redis 5.0
2020年04月 - Redis 6.0
2022年04月 - Redis 7.0
Redisは、ActionScript, Bash, C, C++, Java, JavaScript (Node.js), Python, Rubyなど、非常に多くのプログラミング言語から利用できます。これにより、さまざまな開発環境でRedisを容易に導入できます。
データタイプ
Redisは、キーと値を紐づけてデータを保存しますが、単なるバイナリ列(文字列)だけでなく、リスト、セット、ソートされたセット、ハッシュテーブル、ビットマップなど、多様なデータタイプをサポートしています。これらのデータタイプは、それぞれ専用の操作(コマンド)が用意されており、Redisの柔軟性を高めています。また、サーバーサイドでのアトミックな操作もサポートしています。
バイナリ列(string):
文字列や数値などを格納。
リスト:両端キューとして利用可能。
セット:ソートされない重複のないコレクション。
ソートされたセット:浮動小数点数のスコアによりソートされたコレクション。
ハッシュテーブル:キーと値のペアを格納。
ビットマップ:ビット単位での操作が可能。
集合の濃度:分布を表現。
Redisは、通常はデータをメモリ上に格納しますが、データの永続化のために、スナップショットとAOF(append-only file)という2つの方法を提供しています。スナップショットは、メモリ上のデータを定期的にディスクに保存し、AOFは、データ変更の都度
トランザクションログを書き込むことで、データの損失を防ぎます。Redisは、
トランザクションログの再生成もサポートしています。
Redisは、マスター・レプリカ構成による
レプリケーションをサポートしています。これにより、データの冗長性を確保し、読み込みのスケーラビリティを向上させることができます。また、マスターからレプリカへのデータの同期には、
出版-購読型モデルが利用されており、効率的なデータの伝達が可能です。
性能
Redisは、インメモリでの動作が可能なため、ディスクへの書き込みが必要なデータベースと比較して、非常に高速な処理が可能です。ただし、Redisの操作はシングルスレッド上のシングルプロセスで動作するため、並列処理には対応していません。
クラスタリング
Redisは、クラスタリング機能をサポートしており、大規模なシステムでも効率的な運用が可能です。クラスタリングでは、キー空間の自動パーティショニングやホットリシャーディングがサポートされ、耐障害性の向上やスケールアウトが容易になります。
Redis Stack
Redis Stackは、Redisに加えて、RedisInsight(管理ツール)、Redis(データベース)、RediSearch(全文検索)、RedisTimeSeries(時系列データベース)、RedisBloom(
確率分布)などの機能を追加したものです。これらのソフトウェアもソースアベイラブルで配布されており、Redisの機能を拡張することができます。
過去の機能
RedisGraphは、以前Redis Stackに含まれていましたが、現在はサポートが終了しています。また、RedisGearsやRedisAIは、開発段階で終了しており、Redis Stackには含まれていません。
まとめ
Redisは、高速で柔軟なデータストアとして、多くの開発者に利用されています。多様な
データ構造、
永続性、
レプリケーション、クラスタリングといった機能に加え、Redis Stackによる拡張性も魅力です。ソースアベイラブルな
ライセンス形態で、オープンな開発環境にも貢献しています。