blog

Redis上級学習 - 永続性

redisはキャッシュとしてもデータベースとしても使えます。...

Oct 20, 2020 · 3 min. read
シェア

キャッシュとしてのRedis

Redisはキャッシュとしてもデータベースとしても使えます。

両者の違い:

  • キャッシュされたデータは重要ではなく、全データ量ではありません
  • アクセスが変わるとキャッシュされるデータも変わります
  • キャッシュはホットデータのみを保持
  • データベースからデータが失われることはありません。
  • スピードのためのキャッシュ、スピードと永続性のためのデータベース
  • 電源が切れると、メモリー内のデータは簡単に失われます。
  • キャッシュとしてのredisは、一般的にRDBを使用します。
  • AOFを使用したデータベースとしてのredis

キャッシュはホットデータのみを保持

** 理由

メモリのサイズには制限があります。

ビジネスによってRedisのデータがどのように変化するか

ビジネスロジックによる変更

キーの有効性

鍵の有効期限はアクセス時間より長くないこと。

書き込みが発生すると、キーの有効期限が明らかになります。

鍵の有効期限のカウントダウン時間を設定 EXPIRE key seconds

*** 期限切れキーの削除ポリシー

  • 受動的削除:期限切れの鍵を読み書きする場合、不活性削除ポリシーが起動され、期限切れの鍵が直接削除されます。
  • アクティブ削除:不活性削除ストラテジーではコールドデータがタイムリーに削除されることを保証できないため、Redisは定期的に期限切れのキーのバッチをアクティブに削除します。
  • 現在使用されているメモリがmaxmemoryの制限を超えた場合、アクティブ・クリーンアップ・ポリシーをトリガーします。

事業運営に伴う変化

メモリは有限であるため、アクセスが変化すると、コールドデータのチューニングが不要になります。

Redis

Redisの永続性には、スナップショットコピーとログの2種類があります。

RDB

** スナップショットの記録はポイント・イン・タイムです。

スナップショットを取るとき、redisはスナップショットを実行する子プロセスを開始します。

子プロセスにデータへのポインタのセットをスナップショットするには fork を使います。

forkは書き込み時にコピーされるため、子プロセスの生成時にはコピーは発生しません。

**セーブ

保存タイミングを使用:例:シャットダウンメンテナンス

save は同期保存操作で、指定された時点で Redis インスタンス内のすべてのデータのスナップショットを取得し、RDB ファイルとしてディスクに保存します。

save はすべてのクライアントをブロックします。

** bgsave save**

forkを呼び出して子プロセスを作成

** 関連する構成

** メリット

データの復元は比較的速い - JAVAのシリアライゼーションに似ています。

** デメリット

ジッピングはサポートされていません。dump.rdbのコピーは常に1つだけです。

タイムポイントごとにデータを失いやすい

AOF

AOFは、Redisのファイルへの書き込みのロギングです。

redisでは、RDBとAOFの両方がオンになっている場合、AOFのみがデータ復旧に使用されます

4.0以前:オフセットコマンドの削除、重複コマンドのマージ -最終的に純粋なコマンドログファイルを生成

4.0以降:RDBが古いデータをAOFファイルに追加 -AOFはハイブリッドで、高速なRDBを使用し、ログをフルに使用

** 関連する構成

appendonly yes

appendfilename "appendonly.aof"

自動aof-rewrite-percentage 100

自動aof-rewrite-最小サイズ 64mb

aof-use-rdb-preambleイエス

書き込みポリシー

appendfsync always - 書き込み後にフラッシュします。 appendfsync everysec - 書き込み後、毎秒フラッシュします。

appendfsync no - バッファに書き込み、いっぱいになったらフラッシュします。

** メリット

データ損失が比較的少ない

** デメリット

4.0以前のAOFボリュームは無限に大きい

redisはインメモリデータベースであり、書き込み操作はIOをトリガーします。

Read next

Vue3レスポンシブ原則

Vue3について\nとはいえ、Vue3はrc4バージョンに持ち越され、4月にフロントエンドサークルのベータリリースが赤熱したときに、みんなが勉強し始めたわけではありません!\nvue2レスポンシブ原則レビュー\n\n// 擬似コード\n関数 observe(){\n

Oct 20, 2020 · 8 min read