Maison > base de données > Redis > Utilisez Redis pour stocker les jetons

Utilisez Redis pour stocker les jetons

齐天大圣
Libérer: 2020-05-08 10:42:07
original
3173 Les gens l'ont consulté

Je crois que tous les utilisateurs qui ont développé des comptes publics WeChat savent que access_token est requis pour accéder aux interfaces WeChat. access_token est l'identifiant d'appel d'interface unique au monde du compte officiel. Il y a une limite au nombre de fois que ce access_token peut être obtenu par jour, nous devons donc le sauvegarder nous-mêmes. De plus, ce token a également une durée de validité. Par conséquent, nous devons actualiser régulièrement et réobtenir le access_token.

Comment le sauvegarder ? Si vous utilisez MySQL, une table ne stocke qu'une seule donnée, ce qui semble excessif et peu élégant. Si vous utilisez un fichier pour enregistrer, les performances ne sont pas très bonnes et cela reste un peu gênant. Vous devez considérer le problème de la lecture sale.

Permettez-moi de vous présenter une manière simple, élégante et performante d'utiliser Redis pour stocker des jetons.

Deux commandes

Redis a de nombreux types de données Ici, nous n'avons besoin que de 2 des types de données les plus simples. Des commandes simples peuvent compléter les fonctions. nous avons besoin.

  • set

  • get

Ces deux commandes sont très simples, set est pour une. key est défini sur une chaîne.

$redis->set('name', 'monkeyking');
Copier après la connexion

Ce qui précède indique que la valeur du nom de clé est définie sur Monkeyking. De plus, il peut définir le délai d’expiration des clés. Il est très pratique de pouvoir régler le délai d’expiration.

$redis->set('name', 'monkeyking', ['ex' => 100]);
# 过期时间设置为100秒后
Copier après la connexion

La commande get consiste à obtenir une chaîne. Le code suivant signifie obtenir la valeur du nom de clé.

$redis->get('name');
Copier après la connexion

En plus de bonnes performances, l'utilisation de redis a aussi un très bon point. Puisqu'il s'agit d'une architecture monothread, toutes les commandes sont exécutées séquentiellement. Une fois la commande précédente exécutée, la suivante sera exécutée, il n'y aura donc pas de lecture sale.

Implémentation des fonctions

Après avoir introduit set et get, nous pouvons répondre à nos besoins.

WeChat obtient l'interface access_token et le format de données renvoyé est le suivant :

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

Nous uniquement besoin d'ajouter xEaew2sI2dsAd Enregistrez-le simplement et définissez le délai d'expiration.

Le code est le suivant :

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

function getAccessToken ()
{
    return $redis->get('wx_access_token')
}
Copier après la connexion

Il y a un point à noter ci-dessus, le délai d'expiration doit être inférieur à 7200. Évitez les situations extrêmes, comme obtenir le jeton exactement à 7 200 secondes et appeler l'interface sur WeChat. Étant donné que l'appel de l'interface prend également du temps, le jeton expirera, provoquant une erreur.

Il est très simple et pratique d'utiliser Redis pour accéder aux tokens ! Tout le monde peut l'essayer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal