Maison > base de données > Redis > le corps du texte

Comment ajouter la commande Redis

Libérer: 2020-06-20 16:40:40
avant
4119 Les gens l'ont consulté

Comment ajouter la commande Redis

Redis est devenu le cache standard pour les sociétés Internet en raison de ses hautes performances et de ses fonctionnalités légères. Parfois, nous souhaitons ajouter des commandes personnalisées, principalement dans les scénarios où Redis est fortement utilisé, comme. dans les scénarios d'achat de panique, il est nécessaire de garantir la transactionnalité de plusieurs commandes Redis. S'il n'y a pas de bonne garantie d'atomicité, des problèmes d'incohérence des données peuvent facilement survenir.

Bien que le plan de transaction officiel soit fourni, s'il est nécessaire de porter un jugement basé sur la valeur de retour d'une certaine commande avant de passer à l'étape suivante, le plan de transaction ne pourra pas y faire face.

Aujourd'hui, nous allons utiliser un cas pratique pour décrire comment ajouter une commande Redis. Cette commande est principalement utilisée dans les scénarios anti-brushing :

Il est souvent nécessaire de bannir une certaine IP ou une. certain utilisateur pendant un certain temps. Si cette commande n'est pas utilisée, la solution est la suivante :

Commencez par augmenter, puis déterminez si c'est 1. Si c'est 1, définissez le délai d'expiration. On peut voir que si le premier client qui initie la requête incr raccroche pendant une concurrence élevée, la clé n'expirera pas.

La commande à écrire aujourd'hui est utilisée pour assurer cette transaction. Le côté serveur s'assure que si la valeur de la clé est 1, le délai d'expiration est défini. L'utilisation de la commande

est la suivante :

incexpire key expireTime maxNum
Copier après la connexion

key : la clé à traiter

expireTime : délai d'expiration, en secondes Si vous écrivez 10, cela signifie. que la clé expirera dans 10 secondes. ;

maxNum : Indique le montant à augmenter jusqu'à ce qu'il n'augmente pas. S'il est défini sur 10, la valeur maximale renvoyée est 11. Renvoyer 11 signifie qu'il a été. dépassé ;

2. Écrivez la commande

1. Téléchargez le code redis

La version Redis utilisée dans cet article est

Télécharger ; le code et passez à la branche 3.2.11

git clone https://github.com/antirez/redis
Copier après la connexion

2. Écrivez du code de commande supplémentaire

1) Ajoutez une nouvelle commande à la structure redisCommandTable dans src/server.c

struct redisCommand redisCommandTable[] = {
Copier après la connexion

redisCommandTable est un tableau, chaque élément représente une commande redis et le premier représente une commande. Le deuxième est la fonction de traitement réelle et le troisième est le nombre de paramètres. Les autres ne seront pas discutés en détail.

2) Ajoutez une déclaration de fonction dans src/server.h :

void incrExpireCommand(client *c);
Copier après la connexion

3) Ajoutez ensuite un fichier comme ljh.c (nommez-le vous-même) et ajoutez le code suivant :

#include "server.h"
Copier après la connexion

4) Ajouter un nouveau fichier ljh.o dans src/Makefile

REDIS_SERVER_OBJ=adlist.o quicklist.o ae.o anet.o dict.o server.o sds.o zmalloc.o lzf_c.o lzf_d.o pqsort.o zipmap.o sha1.o ziplist.o release.o networking
Copier après la connexion

L'effet d'exécution est le suivant

Comment ajouter la commande Redis

Comme vous pouvez le voir, après que key1 soit augmenté à 11, il n'augmente plus et après 10 secondes, il redevient 1.

Enfin, nous devons encore nous demander s'il est nécessaire d'ajouter des commandes Redis dans notre scénario. Si nécessaire, nous devons saisir les responsabilités entre chaque couche et ne pas laisser Redis finir par traiter les affaires ; a déclaré que la couche middleware gère généralement des fonctions relativement courantes. Les couches inférieures devraient être plus stables et moins il y a de changements, la situation est normale.

Pour plus de connaissances connexes, veuillez prêter attention à la colonne tutoriel d'introduction à Redis

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:segmentfault.com
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!