ホームページ > データベース > Redis > Redis を使用してトークンを保存する

Redis を使用してトークンを保存する

齐天大圣
リリース: 2020-05-08 10:42:07
オリジナル
3170 人が閲覧しました

WeChat パブリック アカウントの開発を行ったすべての PHP 者は、WeChat インターフェイスにアクセスするには access_token が必要であることを知っていると思います。 access_token は、公式アカウントの認証情報を呼び出すグローバルに一意なインターフェイスです。この access_token は 1 日に取得できる回数に制限があるため、自分で保存する必要があります。また、このトークンには有効期限もあります。したがって、定期的に更新して access_token を再取得する必要があります。

それを保存するにはどうすればよいですか? mysql を使用する場合、1 つのテーブルには 1 つのデータしか格納されませんが、これはやりすぎであまり洗練されていないように感じられます。ファイルを使用して保存する場合は、パフォーマンスがあまり良くなく、やはり少し面倒ですが、ダーティ リードの問題を考慮する必要があります。

Redis を使用してトークンを保存する、シンプルかつエレガントでパフォーマンスの高い方法を紹介します。

2 つのコマンド

Redis には多くのデータ型があります。ここでは、最も単純なデータ型の 2 つだけが必要です。文字列 シンプルなコマンドで機能を完了できます。私たちには必要です。

  • set

  • get

これら 2 つのコマンドは非常に単純で、set は 1 つのコマンドに対応します。キーは文字列に設定されます。

$redis->set('name', 'monkeyking');
ログイン後にコピー

上記は、キー名の値が Monkeyking に設定されていることを示しています。さらに、キーの有効期限を設定できます。有効期限を設定できるのはとても便利です。

$redis->set('name', 'monkeyking', ['ex' => 100]);
# 过期时间设置为100秒后
ログイン後にコピー

get コマンドは文字列を取得します。次のコードは、キー名の値を取得することを意味します。

$redis->get('name');
ログイン後にコピー

優れたパフォーマンスに加えて、redis の使用には非常に優れた点もあります。シングルスレッド アーキテクチャであるため、すべてのコマンドが順番に実行されます。前のコマンドが実行された後、次のコマンドが実行されるため、ダーティ リードは発生しません。

関数の実装

set と get を導入したら、必要な作業を完了できます。

WeChat が access_token を取得するためのインターフェイス、返されるデータ形式は次のとおりです:

{"access_token":"xEaew2sI2dsAd","expires_in":7200}

WeChat xEaew2sI2dsAd を追加するだけです。保存して有効期限を設定するだけです。

コードは次のとおりです:

function setAccessToken ($token) {
    return $redis->set(
        'wx_access_token', 
        $token, 
        ['ex'=>7000]
    );
}

function getAccessToken ()
{
    return $redis->get('wx_access_token')
}
ログイン後にコピー

上記で注意すべき点があり、有効期限は 7200 より小さく設定する必要があります。 7200 秒ちょうどでトークンを取得し、WeChat でインターフェイスを呼び出すなどの極端な状況を防ぎます。インターフェイスの呼び出しにも時間がかかるため、トークンの有効期限が切れてエラーが発生します。

Redis を使用してトークンにアクセスするのは非常に簡単で便利です。誰でも試してみることができます。

以上がRedis を使用してトークンを保存するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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