Redisは高性能な非リレーショナルキーバリューライブラリで、分散ロックやキャッシュによく使用されます。
Redis のキーは String 型で、値は型に依存します。
文字列、リスト、ハッシュ(ドメイン値用に2つの内部フィールドを持つ)、セット、zset
Redis
高速リード/ライト。 読み出し最大11w/s、書き込み最大8.1w/s。 メモリに直接読み書きするため、時間の複雑さはO(1)とみなすことができます!
トランザクション操作のサポート。基本操作はトランザクションで、複数の操作を組み合わせて1つのトランザクションにすることもできます。
トランザクション永続性のサポート
マスタースレーブレプリケーションをサポートし、ホストが自動的にスレーブにデータをコピーし、読み取りと書き込み分離することができます。
物理メモリサイズによる容量制限
自動フォールトトレランスとリカバリはありません
オンライン拡張に対応しにくい、十分なメモリを用意する必要がある、利用率が低い可能性がある、など。
Redisキャッシュを使用する理由
キャッシュの利点
ハイパフォーマンス
メモリからキャッシュを読み込む方が高速ですが、キャッシュの更新とデータベースの更新を同期させる必要があります。
ハイコンカレント
データベースとキャッシュサービスを分離し、より多くの同時処理をサポート
Redismap/guavaに対する利点
map/guavaは、Javaアプリケーション内部のローカル・キャッシュで、JVMによって破壊されます。 インスタンス内部で作成された場合、そのインスタンスにのみ表示され、他のインスタンスで共有することはできません。
Redisはアプリケーションの外部にある分散キャッシュで、複数のインスタンス間で共有できます。
Redis使用シナリオ
カウンター
RedisはStringを直接インクリメントしたりデクリメントしたりできます。
セッションキャッシュ
複数のアプリケーションサーバーの統合セッションサーバーとして使用でき、すべてのセッション情報を保存します。
分散ロック
Redisには分散ロックを実装するためのSETNX(存在しないように設定し、存在する場合は失敗するように設定する)コマンドが付属していますが、公式のRedLock(安全、デッドロック回避、フォールトトレラント)分散ロックを使うこともできます。
Redis
RDB
Redisデータベースの省略スナップショット
Redisのデフォルトの永続化メソッド。メモリ上のデータは、一定時間ごとにスナップショットとしてハードドライブに保存され、その結果のデータファイルdump.rdbに対応します。
短所:データ損失の可能性
AOF
両方の方法がオンになっている場合、データ復旧RedisはAOF復旧を優先します。