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

Utilisez Redis pour stocker les jetons

齐天大圣
齐天大圣original
2020-05-08 10:20:143101parcourir

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');

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秒后

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

$redis->get('name');

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')
}

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!

Déclaration:
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