Maison  >  Article  >  développement back-end  >  Redis entièrement utilisé dans 11 scénarios d'application Web

Redis entièrement utilisé dans 11 scénarios d'application Web

黄舟
黄舟original
2017-10-25 09:20:201649parcourir

Vous trouverez ci-dessous 11 scénarios d'application Web dans lesquels les fonctionnalités de Redis peuvent être pleinement utilisées pour améliorer considérablement l'efficacité.

1. Affichez la dernière liste de projets sur la page d'accueil.

Redis utilise un cache mémoire résident, qui est très rapide. LPUSH est utilisé pour insérer un identifiant de contenu, qui est stocké sous forme de clé en tête de liste. LTRIM est utilisé pour limiter le nombre d'éléments dans la liste à un maximum de 5 000. Si la quantité de données que l'utilisateur doit récupérer dépasse cette capacité du cache, la requête doit alors être envoyée à la base de données.

2. Supprimer et filtrer.

Si un article est supprimé, vous pouvez utiliser LREM pour le vider complètement du cache.

3. Classements et problèmes associés.

Le classement est trié par score. La commande ZADD peut directement implémenter cette fonction, tandis que la commande ZREVRANGE peut être utilisée pour obtenir les 100 meilleurs utilisateurs en fonction de leurs scores. ZRANK peut être utilisé pour obtenir le classement des utilisateurs, ce qui est très direct et facile à utiliser.

4. Trié par votes des utilisateurs et par heure.

C'est comme un classement Reddit, avec des scores changeant au fil du temps. Utilisez les commandes LPUSH et LTRIM ensemble pour ajouter des articles à une liste. Une tâche en arrière-plan est utilisée pour obtenir la liste et recalculer l'ordre de la liste, et la commande ZADD est utilisée pour remplir la liste générée dans le nouvel ordre. Les listes permettent une récupération très rapide, même pour les sites très chargés.

5. Traitement des articles périmés.

Utilisez l'heure Unix comme mot-clé pour conserver la liste triée par heure. Récupérez current_time et time_to_live pour terminer la tâche difficile de trouver les éléments expirés. Une autre tâche en arrière-plan utilise ZRANGE...WITHSCORES pour interroger et supprimer les entrées expirées.

6. compter.

Il peut être utilisé pour diverses statistiques de données, comme vouloir savoir quand une adresse IP est bloquée. La commande INCRBY facilite cette tâche, en conservant le décompte par incrément atomique ; GETSET est utilisé pour réinitialiser le compteur et l'attribut d'expiration est utilisé pour déterminer quand un mot-clé doit être supprimé.

7. Un projet spécifique dans un délai précis.

Il s'agit d'un problème spécifique au visiteur et peut être résolu en utilisant la commande SADD pour chaque page vue. SADD n'ajoute pas de membres déjà existants à une collection.

8. Analyse en temps réel de ce qui se passe, utilisée pour les statistiques de données et la prévention du spam, etc.

En utilisant les commandes primitives Redis, il est plus facile de mettre en œuvre un système de filtrage du spam ou un autre système de suivi en temps réel.

9. Pub/Sous.

Maintenir la cartographie des données par les utilisateurs lors des mises à jour est une tâche courante dans les systèmes. La fonctionnalité pub/sub de Redis facilite cela à l'aide des commandes SUBSCRIBE, UNSUBSCRIBE et PUBLISH.

10. file d'attente.

La file d'attente est visible partout dans la programmation actuelle. En plus des commandes de type push et pop, Redis dispose également de commandes de file d'attente bloquantes, qui permettent à un programme d'être ajouté à la file d'attente par un autre programme pendant l'exécution. Vous pouvez également faire quelque chose de plus intéressant, comme une file d'attente tournante de flux RSS mis à jour.

11. cache.

Le cache Redis est utilisé de la même manière que Memcache.

Les applications réseau ne peuvent pas s'engager dans des guerres de modèles sans fin. Regardez ces commandes primitives Redis. Bien qu'elles soient simples mais puissantes, ce qui peut être accompli en les combinant est encore plus inimaginable. Bien sûr, vous pouvez écrire du code spécialisé pour effectuer toutes ces opérations, mais Redis est évidemment plus facile à mettre en œuvre.

Il ne fait aucun doute que Redis a créé une nouvelle idée de stockage de données. Grâce à Redis, nous n'avons pas à nous concentrer sur la façon de mettre l'éléphant au réfrigérateur face à une base de données aux fonctions monotones. Au lieu de cela, nous utilisons les structures de données et les opérations de données flexibles de Redis pour construire différents réfrigérateurs pour différents éléphants. J'espère que vous aimez cette métaphore.

Ce qui suit est un nouvel article écrit par @antirez, l'auteur de Redis. Il décrit quelques scénarios d'application pour lesquels Redis est plus adapté. NoSQLFan les répertorie brièvement ici pour votre aperçu :

1. L'opération consistant à obtenir les dernières données N

Par exemple, en obtenant généralement les derniers articles sur votre site Web, grâce à la méthode suivante, nous pouvons mettre les identifiants des 5000 derniers. commentaires dans la collection List de Redis et obtenez les parties excédentaires de la base de données

  • Utilisez la commande LPUSH last.commentseddfa97ffc1dc71769e3f42e462dfe8e pour insérer des données dans la collection list

  • Une fois l'insertion terminée, utilisez la commande LTRIM last.comments 0 5000 pour toujours enregistrer uniquement les 5000 derniers identifiants

  • Ensuite, nous obtenons un certain identifiant sur le client Vous pouvez utiliser la logique suivante (pseudocode) lorsque vous commentez une page

FUNCTION get_latest_comments(start,num_items):
    id_list = redis.lrange("latest.comments",start,start+num_items-1)
    IF id_list.length < num_items
        id_list = SQL_DB("SELECT ... ORDER BY time LIMIT ...")
    END
    RETURN id_list
END

Si vous avez différentes dimensions de filtrage, comme les N derniers éléments dans un certain catégorie, alors vous pouvez créer Si une liste classée de cette manière ne stocke que les identifiants, Redis est très efficace.

2. Application de classement, prenez les opérations TOP N

La différence entre cette exigence et l'exigence ci-dessus est que l'opération précédente utilise le temps comme poids, et celle-ci est basée sur une certaine condition, comme le tri par le nombre de likes, alors notre ensemble trié doit entrer en jeu. Définissez la valeur que vous souhaitez trier sur le score de l'ensemble trié et définissez la valeur spécifique. données à la valeur correspondante à chaque fois. Vous n'avez besoin d'exécuter qu'une seule commande ZADD à la fois.

3. Applications qui doivent définir avec précision l'heure d'expiration

Par exemple, vous pouvez définir la valeur du score de l'ensemble trié mentionné ci-dessus sur l'horodatage de l'expiration. heure, alors vous pouvez simplement trier par heure d'expiration et effacer régulièrement les données expirées. Non seulement cela efface les données expirées dans Redis, mais vous pouvez également considérer complètement l'heure d'expiration dans Redis comme un index des données dans la base de données et l'utiliser. Redis pour savoir quelles données sont nécessaires à la suppression expirée, puis supprimez avec précision les enregistrements correspondants de la base de données.

4.Application de compteur

Les commandes Redis sont toutes atomiques et vous pouvez facilement utiliser les commandes INCR et DECR pour créer un système de compteur.

5. Opération Uniq pour obtenir la valeur de déduplication de toutes les données sur une certaine période de temps

Il s'agit de la structure de données d'ensemble la plus appropriée en utilisant Redis. Il vous suffit de continuer à jeter des données dans le. set. set signifie collection, il sera donc automatiquement dédupliqué.

6. Système en temps réel, système anti-spam

Grâce à la fonction définie mentionnée ci-dessus, vous pouvez savoir si un utilisateur final a effectué une certaine opération, et vous pouvez le trouver Collection d'opérations et d'analyses, comparaison statistique, etc. Rien n'est impossible, seulement inimaginable.

7. Pub/Sub crée un système de messagerie en temps réel

Le système Pub/Sub de Redis peut créer un système de messagerie en temps réel, comme de nombreux exemples de systèmes de discussion en temps réel créés avec Pub/Sub.

8. Construisez un système de file d'attente

Utilisez la liste pour créer un système de file d'attente, utilisez un ensemble trié pour même créer un système de file d'attente avec priorité.

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