現在の位置: ホーム> 最新記事一覧> APCU_ENTRYを使用してAPIで要求された返品データをキャッシュする方法

APCU_ENTRYを使用してAPIで要求された返品データをキャッシュする方法

gitbox 2025-05-27

APCU_Entry関数は、APCU拡張機能によって提供されるキャッシュ操作方法です。その機能は、値をキャッシュに保存し、コールバック関数を実行して、値が存在しないときにデータを取得することです。このコールバック関数は通常、APIデータを取得したり、複雑な計算を実行したりする場所です。

 mixed apcu_entry(string $key, callable $callback, int $ttl = 0)
  • $キー:通常、キャッシュされたキー値は、キャッシュされたデータを識別するために使用されます。

  • $ callback :コールバック関数。キャッシュにキーがない場合、データを取得するためにコールバック関数が実行されます。

  • $ TTL :キャッシュの有効期間、秒単位。キャッシュされたデータは、有効期限が切れた後に削除されます。

なぜAPCU_Entryを使用するのですか?

APCU_Entryを使用する主な目的は、データベースまたはリモートAPI要求の数を減らし、システムの応答速度を改善することです。データがキャッシュされた場合、次の同じ要求がリモートサービスに再計算またはアクセスすることなく、キャッシュから直接読み取られます。これにより、サーバーの負荷が大幅に削減されるだけでなく、ユーザーエクスペリエンスが効果的に改善されます。

たとえば、APIインターフェイスを呼び出す場合、APIの返されたデータは比較的安定している可能性があり、頻繁に変化しません。これらの返品データをキャッシュすることにより、ユーザーリクエストがリクエストされるたびに同じAPIリクエストを行うことを避けることができ、それにより応答が高速化されます。

APCU_ENTRYキャッシュAPIを使用して返品データを要求する方法は?

以下は、 APCU_Entryを使用して要求された返されたデータをキャッシュする方法を示す簡単な例です。

1. APCUを構成します

まず、PHP環境にAPCU拡張機能がインストールされ、有効になっていることを確認してください。インストールしていない場合は、次のコマンドを介してインストールできます。

 sudo apt-get install php-apcu

インストール後、PHPサービスを再起動します。

 sudo service php-fpm restart

2。キャッシュロジックを書き込みます

要求してユーザーデータを取得するAPIインターフェイスがあるとします。 APCU_Entryを介して返されたデータをキャッシュできます。

 <?php
// 聞く API ユーザーデータを取得します
function fetch_user_data($user_id) {
    // 合格 URL データを取得します,ここにデータがあります JSON 形式
    $url = "https://gitbox.net/api/user/{$user_id}";
    $response = file_get_contents($url);
    return json_decode($response, true);
}

// 使用 apcu_entry キャッシュ API データを返します
function get_user_data($user_id) {
    // キャッシュ的键值
    $cache_key = "user_data_{$user_id}";
    
    // 尝试从キャッシュ中データを取得します
    return apcu_entry($cache_key, function() use ($user_id) {
        // 如果キャッシュ中没有数据,それから API データを取得します
        return fetch_user_data($user_id);
    }, 3600); // キャッシュ 1 時間
}

// サンプルコール
$user_data = get_user_data(123);
print_r($user_data);
?>

上記のコードでは、 fetch_user_data関数を定義して、リモートAPIからユーザーデータを取得します。次に、データはAPCU_Entry関数を使用してキャッシュされ、キャッシュされたキー値はuser_data _ {$ user_id}であり、キャッシュされた有効性期間は1時間です。データがキャッシュにない場合、 APCU_ENTRYはコールバック関数を実行し、APIからデータを取得してキャッシュします。

3。キャッシュされたデータの解析

対応するデータがすでにキャッシュに存在する場合、 APCU_ENTRYは、コールバック関数を再度実行せずにキャッシュされたデータを直接返します。キャッシュの有効期限が切れると、次のリクエストはコールバック関数を再実行して、最新のデータと再キャッシュを取得します。

最適化の提案

  1. キャッシュポリシー:適切なキャッシュの有効期限を選択します。実際のアプリケーションでは、異なるデータが異なる更新周波数を持つ場合があり、実際の条件に応じてキャッシュの妥当性期間を設定できます。

  2. キャッシュのクリーンアップ:データが変更された場合は、キャッシュをクリーニングすることを忘れないでください。 APCU_DELETEを使用して、キャッシュを削除できます。

 apcu_delete($cache_key);
  1. メモリ管理:APCUキャッシュデータはサーバーのメモリに保存されるため、キャッシュを使用する場合、メモリの使用量を考慮する必要があります。キャッシュされたデータの量が大きすぎると、メモリが不十分になる可能性があり、システムのパフォーマンスに影響します。