Redis とは
Redis
レディース
と読むRemote dictionary server
の略- メモリ上で動作する
- キーバリュー型インメモリデータベース
Redisの特徴
Redisのデータモデル(キーバリューストア)
キーとバリューのペアで保存するデータベースの1種
従来のものは、キーに文字列値のみ関連付けすることが出来たが、Redisでは文字列、バイナリデータ、集合(セット)、ハッシュなど様々なデータを格納できる
インメモリ型データベース
全てのデータをメモリ上に格納するため、RDBMSに比べ、非常に高速に書き込み/読み込みができる
基本的にRAM容量に収まるデータしか格納できない
データ永続化
Redisには以下の2つのデータ永続化機能があることにより、障害後のデータの復元が容易になっている
スナップショット
Redis データセットをディスクにコピーする
定期的にインメモリデータベースのデータをディスクに保存する。Redis再起動時にスナップショットを読み込むことでデータ永続化を実現している。
追記専用ファイル(Append Only File)
書き込み時に各データ変更を保存しておくファイル
書き込み操作をログファイルに出力しておく。データロスを絶対にしたくない場合に使う。 出力されるファイルはテキストであるため、どんどんサイズが大きくなってしまう。再構築をすることが必要。 スナップショットと並行して使うことが推奨されている。
バーチャルメモリ
データを一時的にスワップファイルに移すことで実際のRAMの容量よりも多いデータを扱えるようにするオプション機能
Redisが解決するユースケース
RDBMSが苦手な領域で活躍する
- キャッシュ
- セッション管理
- 閲覧数カウンター
- リアルタイムランキング集計
- 1対多に配信するメッセージモデル など
導入事例
ニコニコ生放送、GitHub、Stack Overflow、国内外のソシャゲなどで使われている