ホームページ  >  記事  >  データベース  >  Redis データ整合性の概要

Redis データ整合性の概要

尚
転載
2020-04-05 09:06:292683ブラウズ

いわゆる redis データの一貫性とは、変更、保存、または削除後に、redis 内のデータもそれに応じて変更される必要があることを意味します。そうでないと、ユーザーが再度クエリを実行したときに、削除されたダーティなデータが見つかる可能性があります。

Redis データ整合性の概要

1. キャッシュの一貫性の必要性

前回の記事に引き続き、Redis キャッシュの浸透の問題を解決しました (シンプルな解決策、最適化可能)ただし、redis を使用する場合は、キャッシュの一貫性の問題も考慮する必要があります。たとえば、新しいユーザーを保存した後、データも同時に redis キャッシュに挿入され、特定のデータが保存される必要があります。キャッシュで更新されます。また、同期的に更新される必要があります。redis のデフォルトの方法は次のとおりです: 設定しない場合、redis に保存される値は以前に保存したデータになります。データはサーバーが再起動されたときにのみ同期されます。これは明らかに非常に望ましくありません。はい、このような場合、サーバーを常に再起動する必要があるのではありませんか? それはなんと大惨事でしょう!

2. ビジネス シナリオ

ここでは 1 つのシナリオについてのみ説明します。他のシナリオも同様に処理されます。シナリオは次のとおりです: ユーザー データを Redis に配置するとします。現時点では、 , 新しいユーザーが登録すると、新しいデータがデータベースに挿入されますが、同時に、次のクエリで最新のデータが表示されるように、そのデータも Redis に挿入する必要があります。

まず、デフォルトで Redis が処理を使用せずに整合性操作を実行するかどうかを見てみましょう。テスト データベースには 18 個のユーザー データがあります。現時点では、システムを起動した後、最初のデータを登録して挿入します。 19 個のデータが完成したら、redis に 19 個あるかどうかを確認します。

Redis データ整合性の概要

#登録後、19 番目のデータをデータベースに挿入しました。

Redis データ整合性の概要

その後も引き続き使用します。前の記事 上記のクエリ キャッシュ メソッドは、すべての情報を取得するために使用されます。最後のものを直接見てみましょう。最後のものは Nineteen ではなく Runqing であることがわかります。そのため、redis はデフォルトでキャッシュ整合性操作を実行しません。

Redis データ整合性の概要

3. キャッシュの一貫性の実装 (オプション 1)

実際、一貫性を実現するのは非常に簡単です。挿入操作を実行した後、データを出力し、それを同時に Redis キャッシュに保存することで、キャッシュを再度クエリしたときに新しいデータも確認できるようになります。コードは次のとおりです:

Redis データ整合性の概要

注意すべき点 はい: ここでは JPA の findAll() を直接呼び出しています。実際、より良い方法は、ID に基づいて挿入したばかりのものを更新することです。これはより効率的です。ここでは実装方法のデモを示します。 , そして、新しいデータを登録して、それが機能するかどうかを確認します。キャッシュ内でも、新しく挿入されたデータ ID が 29 であることがわかります。新しいデータがキャッシュに存在するかどうかを確認してみましょう

Redis データ整合性の概要

Redis データ整合性の概要

#4. Redis キャッシュ整合性の実装 (オプション 2)

Redis 内のデータを定期的にクリアします。たとえば、スケジュールされたタスクを設定すると、Redis 内のデータが消去されます。 1 時間ごとにクリアされる、つまり redis にデータが無効になり、再度保存または削除すると、以前の redis 内のデータは存在しなくなるため、データを redis にリセットするのと同じになり、データの整合性が維持されます。保証することができます。

redis の詳細については、

redis 入門チュートリアル 列に注目してください。

以上がRedis データ整合性の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。