summary:
Redisは,2009年にイタリアのプログラマーであるSalvatore Sanfilippoによって開発された.当初は,彼が開発していたスケーラブルなWebアプリケーションのデータベースのボトルネックを解消する目的で作られた.Sanfilippoは,従来のリレーショナルデータベース[RDB]が高頻度の読み書き処理において最適ではないことを認識し,メモリ上で動作する高速データストアの開発に着手した.最初のバージョンはわずか数千行のCコードで実装され,シンプルながらも革新的なデータ管理アプローチを提示した.
その後,Redisはオープンソースプロジェクトとして公開され,VMware[2010年],Pivotal Software[2013年],Redis Labs[後のRedis Inc.,2015年〜]などの企業によって順次支援されるようになった.2011年にはバージョン2.2でマスター・スレーブレプリケーション機能が導入され,2015年にはクラスタリング機能を備えたRedis Clusterが導入され,水平方向のスケールアウトが容易になった.2016年にはモジュールシステムが導入され,2018年から2020年にかけてRediSearchやRedisJSON,RedisAIなどの拡張機能が登場し,検索・分析機能が大幅に強化された.2021年には創始者のSanfilippoがプロジェクトのリーダーシップをコミュニティに移譲し,新たな発展段階へと進んだ.
Redisは,すべてのデータをメモリ[RAM]上に格納することで,ミリ秒単位あるいはマイクロ秒単位の超高速なデータアクセスを実現する.ディスクへのI/Oを最小限に抑えることで,従来のデータベースと比較して100倍以上の高速化を実現している場合もある.そのため,キャッシュ,セッション管理,リアルタイム分析,高頻度取引などの低レイテンシが求められる用途に最適である.メモリの効率的な使用のため,独自のメモリ管理技術と最適化されたデータ構造を採用している.
各データ構造は,原子的な操作をサポートしており,複数のクライアントからの並行アクセスにも安全に対応する.
Redisは,水平スケールアウトを実現するためのレプリケーションとクラスタリングを包括的にサポートする.大規模システムでの高可用性と負荷分散を実現できる.
これらの機能により,小規模システムから大規模分散システムまで,様々な規模のデプロイメントに対応できる.
Redisは,Pub/Sub[発行-購読型]のメッセージキュー機能を提供し,リアルタイム通信に適用可能である.チャネルベースのパブリッシュ・サブスクライブメカニズムにより,複数のクライアント間での効率的なメッセージ配信を実現する.例えば,チャットアプリ,通知システム,イベントストリーミング,マイクロサービス間通信などに広く利用される.Redis Streamsと組み合わせることで,より高度なイベント処理システムを構築することも可能である.
Redisは,マルチコマンドトランザクションをサポートし,複数の操作を原子的に実行できる.また,Lua スクリプティングによりサーバーサイドでの複雑な操作を効率的に実行することが可能である.パイプライニング技術により,複数のコマンドをバッチ処理し,ネットワークレイテンシを削減できる.これらの機能により,複雑なデータ操作を高速かつ安全に実行することができる.
Mathematics is the language with which God has written the universe.