ホームページ > データベース > Redis > Redis がページング クエリを解決する方法

Redis がページング クエリを解決する方法

(*-*)浩
リリース: 2019-11-27 10:11:37
オリジナル
6603 人が閲覧しました

クエリ結果をキャッシュするとシステムのサービス機能が大幅に向上し、基盤となるサービスやデータベースへの負担が軽減されることは誰もが知っています。ページング条件を使用したキャッシュの場合、さまざまなページング条件に従って複数のキーをキャッシュすることもできます。

Redis がページング クエリを解決する方法

SortedSet に基づくページング クエリ キャッシュ ソリューション

最初に思い浮かぶ解決策は、@see ListOperations< を使用することです。 ;K, V> ページング条件に従って複数のキーを使用する代わりに、1 つのキーを使用してページングなしですべてのデータを Redis にキャッシュし、ページング条件に従って範囲 (キー、開始、制限) を使用してページング結果を取得します。 (推奨学習: Redis ビデオ チュートリアル )

これは問題を引き起こします。キャッシュが失敗すると、同時書き込みキャッシュによりデータの重複が発生します。そこで、パスすることを考えました。同時実行中に重複データを処理するには set を使用します。@参照 ZSetOperations

コード ロジックは次のとおりです:

range(key,start,limit)按照分页条件获取缓存,命中则直接返回
缓存未命中,查询(没有分页条件)数据库或是调用(没有分页)底层接口
add(key,valueScoreMap<value,score>)写入缓存,expire设置缓存时间
当需要清理缓存时,直接删除key,如果是因为数据新增和删除,可以add(key,value,score)或remove(key,value)
ログイン後にコピー

redis は分割されますスコアに従ってマップ内のデータを値の昇順に並べます。一般にスコアスコアは SQL 文の filedA 順の filedA の値です。これによりデータの一貫性が保証されます。

しかし

このキーによってキャッシュされた値は確かにホット データですが、少数のデータのみが頻繁に使用され、残りはまったく使用されない可能性があります。 , データが 100 ページある場合、実際に使用されるのは最初の 10 ページだけです。ページ、これもキャッシュ領域の無駄につながります。Redis 仮想メモリが使用されている場合は、一定の影響もあります。

SQL クエリが元のページング クエリから非ページング クエリに変更されました。キャッシュが失敗すると、システムの処理能力が以前より低下します (特に大きなテーブルの場合)。

Redis 関連の詳細はこちら技術記事については、Redis 入門チュートリアル 列にアクセスして学習してください。

以上がRedis がページング クエリを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート