Redisは、Remote Dictionary Serverの略で、オープンソースのインメモリデータ構造ストアです。文字列だけでなく、リスト、ハッシュ、セット、ソートセットなどより複雑なデータ構造に関連するキーを保存できるため、データ構造サーバーと表現されることもあります。
Redisはメモリ上にデータを保存するため、ディスクやSSDにデータを保存するデータベースと比較して非常に高速です。そのため、キャッシュ、セッションストレージ、リアルタイム分析、メッセージキューイングなど、スピードが要求される場面で活躍します。
例えば、人気記事10本のリストを表示したいニュースサイトを考えてみましょう。ユーザーがサイトを訪れるたびにデータベースから人気記事10件を計算するのは非常に時間がかかります。その代わりにRedisを使って各記事の閲覧数を記録しておくことができます。記事が閲覧されるたびにRedisで対応するカウントを増やしていくのです。そうすれば、ユーザーがサイトを訪れるたびに、カウント数が最も多い10個の記事を素早く取り出すことができます。
Redisのもう1つの一般的な用途はセッションの保存です。例えば、ユーザーがWebアプリケーションにログインしたとき、アプリケーションはそのユーザーがログインしていることを記憶しておく必要があります。ユーザーがログインするたびに、ユーザーのセッションデータをRedisに保存する方法があります。そして、ユーザーがアプリケーションを操作する際に、Redisを使用してユーザーがログインしているかどうか、またその権限はどうなっているかをチェックできます。
しかし、Redisはインメモリストアであるため、一般的にディスクやSSDベースのストレージよりも容量に制限があり、サーバーが再起動したりクラッシュしたりするとRedisに保存されているデータが失われる可能性があります。これを軽減するために、Redisはデータセットを定期的にディスクにダンプするか、各コマンドをログに追加することで永続的なストレージのオプションを提供します。
全体としてRedisはデータへの高速アクセスを必要とし、独自のデータ構造から利益を得ることができるアプリケーションにとって強力なツールです。しかし、その特性から、通常アプリケーション用の独立したデータベースとしてではなく、他のディスクベースのデータベースを補完するものとして使用されます。