Nginx逆プロキシキャッシュとredisの概要

1598 ワード

Nginxのngx_http_proxy_moduleモジュールは、バックエンドサーバの逆エージェント機能を実現し、クライアント要求の動静分離および負荷等化機能を実現することができる.Nginxがクライアント要求をバックエンドサーバに逆プロキシすると、keep-alive接続が確立される.エージェントサーバとクライアント、エージェントサーバとバックエンドウェブサーバはいずれも長鎖を確立し、これはNginx性能を低下させるため、proxyモジュールのキャッシュ機能が役に立ち、エージェントサーバとクライアントの間は依然として長鎖を維持し、エージェントサーバとバックエンドウェブサーバの間の要求が終了した後、エージェントサーバはコンテンツをローカルにキャッシュし、バックエンドと長鎖を確立せず、システム資源を大幅に節約した.同時に、クライアントが要求すると、プロキシサーバは直接キャッシュに行ってクライアントに戻ります.プロキシサーバはメモリにキャッシュされ、key-value形式で格納されます.valueはローカルファイルシステムに格納されているURLへのハッシュ値を格納します.キャッシュ機能はhttp、server、locationセグメントを定義し、どのセグメントがキャッシュを使用できるかを示す要求を定義することができる.一般的には、キャッシュパスをhttpセグメントに定義し、呼び出しキャッシュを特定の状況に応じて構成します.
Redisの紹介
頻繁な書き込み操作、統計情報の読み取りが比較的少ない操作(Webアクセスカウンタなど)は、メモリベースのKey/Value(キー/値)ストレージシステム(redisなど)や、ローカル更新機能を備えたドキュメントストレージシステム(MongoDBなど)を使用する必要があります.
redisは先進的なKey/Valueストレージシステムです.Memcachedと似ています.違いは次のとおりです.
  • redisは、簡単なKey/Valueタイプのデータだけでなく、list、set、hashなどのデータ構造の記憶も提供します.
  • redisは、データのバックアップ、すなわちmaster slaveモードのデータバックアップをサポートします.
  • redisはデータの永続化をサポートし、メモリ内のデータをディスクに保持し、再起動時に再ロードして使用することができます.

  • redisでは、すべてのデータがメモリに格納されているわけではありません.
    redisはすべてのKeyの情報をキャッシュするだけで、redisがメモリの使用量が閾値を超えていることを発見した場合、スイッチ(swap)の操作がトリガーされます.redisは、「swappabillity=age*log(size_in_memory)」に基づいて、どのキーに対応するValueがディスクに交換される必要があるかを計算し、これらのキーに対応するvalueをディスクに永続化し、メモリから消去します.
    この特性により、redisは、マシン自体のメモリサイズを超えるデータを保持することができる.もちろん、マシン自体のメモリはすべてのkeyを保持する必要があります.結局、これらのデータは交換操作を行わないからです.
    また、redisがメモリ内のデータをディスクに交換すると、サービスを提供するプライマリ・スレッドと交換操作を行うサブスレッドがこのメモリの一部を共有するため、交換が必要なデータを更新すると、redisはこの操作をブロックします.
    サブスレッドが交換操作を完了するまで変更できません.