TIL

Today I Learned. 知ったこと、学んだことを書いていく

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、国内外のソシャゲなどで使われている

参考文献