Maison > base de données > Redis > Redis : l'outil secret pour un traitement efficace des logs en temps réel

Redis : l'outil secret pour un traitement efficace des logs en temps réel

王林
Libérer: 2023-11-07 14:48:26
original
690 Les gens l'ont consulté

Redis : loutil secret pour un traitement efficace des logs en temps réel

Redis : L'outil secret pour un traitement efficace des journaux en temps réel

Avec la popularité des systèmes de journalisation, le traitement des journaux est devenu une partie très importante de la technologie logicielle. Les journaux peuvent fournir aux développeurs des commentaires et des données en temps réel, aidant ainsi à localiser rapidement les problèmes dans le programme. Cependant, lorsque l’échelle de l’entreprise est grande et que la concurrence des systèmes est élevée, le traitement des journaux devient une tâche très difficile. Les solutions traditionnelles de traitement des journaux utilisent des bases de données relationnelles pour le stockage. Bien que cette solution soit réalisable, elle est sujette à des goulots d'étranglement en termes de performances dans les scénarios de concurrence élevée. Afin de résoudre ce problème, de nombreuses entreprises ont commencé à utiliser Redis comme outil de stockage et de traitement des journaux.

Redis est un système de stockage clé-valeur hautes performances. Il se caractérise par la prise en charge de structures de données riches, telles que des chaînes, des hachages, des listes, des ensembles, des ensembles ordonnés, etc., qui peuvent répondre à presque tous les besoins en matière de stockage et de traitement des journaux. . De plus, Redis présente de nombreux avantages tels qu'une lecture et une écriture à grande vitesse, un traitement hautement simultané et la prise en charge de la persistance des données, ce qui en fait un outil très approprié pour le traitement des journaux en temps réel.

Ensuite, nous présenterons en détail comment Redis traite les journaux en temps réel et donnerons des exemples de code pertinents :

1 Redis en tant que file d'attente de journaux

Lorsque des journaux en temps réel massifs doivent être traités rapidement, une stratégie courante consiste à. utilisez la file d'attente des journaux. Redis prend en charge plusieurs structures de données telles que list et set, parmi lesquelles la structure de données de liste correspond aux caractéristiques de la file d'attente. Nous pouvons transférer les enregistrements du journal vers la liste, puis lire les enregistrements de la liste pour les traiter. Cette méthode présente les avantages d’une faible latence, d’une haute disponibilité et d’un déploiement distribué facile.

Ce qui suit est un exemple de code Java montrant comment pousser les enregistrements de journal dans la structure de données de la liste Redis :

Jedis jedis = new Jedis("localhost");
String log = "2021-06-01 13:30:29 INFO - User Login";
jedis.rpush("log_queue", log);
Copier après la connexion

Ici, nous utilisons le client Java Redis Jedis, nous nous connectons d'abord à l'instance Redis, puis utilisons la commande rpush pour pousser le enregistrement du journal vers la log_queue Poussez les enregistrements du journal dans la structure de données de la liste.

Ensuite, nous lisons les enregistrements de la log_queue et les traitons :

while (true) {
   List<String> logs = jedis.brpop(0, "log_queue");
   for (String log : logs) {
      System.out.println(log);   
   }
}
Copier après la connexion

Ici, les enregistrements du journal sont extraits de la fin de la log_queue en exécutant en continu la commande brpop. Lorsque la file d'attente est vide, la commande brpop se bloque jusqu'à ce que de nouveaux enregistrements soient placés dans la file d'attente. De cette façon, nous pouvons atteindre l’objectif d’obtenir des journaux en temps réel.

2. Redis comme collecteur de journaux

Lorsque nous devons collecter plusieurs journaux d'application, nous pouvons utiliser Redis comme collecteur de journaux centralisé. Plus précisément, nous pouvons définir un processeur de journaux dans l'application, qui est chargé de transmettre les enregistrements de journaux du programme actuel dans l'instance Redis. Dans le même temps, un autre processus peut lire et traiter tous les enregistrements de journaux de Redis. Cette approche présente les avantages d’un faible couplage, d’une expansion facile et d’une intégration facile.

Ce qui suit est un exemple de code Java montrant comment utiliser le framework log4j pour transférer les journaux dans Redis :

1 Ajoutez des dépendances dans le fichier pom.xml :

<dependency>    
    <groupId>org.slf4j</groupId>    
    <artifactId>slf4j-log4j12</artifactId>    
    <version>1.7.25</version>
</dependency>
<dependency>    
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>    
    <version>3.6.1</version>    
</dependency> 
Copier après la connexion

2 Ajoutez des configurations dans le fichier de configuration log4j :

log4j.appender.redis=org.apache.log4j.net.SocketAppender    
log4j.appender.redis.remoteHost=localhost    
log4j.appender.redis.port=6379    
log4j.appender.redis.reconnectionDelay=10000    
log4j.appender.redis.locationInfo=true
log4j.appender.redis.layout=org.apache.log4j.PatternLayout    
log4j.appender.redis.layout.ConversionPattern=%m%n
Copier après la connexion
.

3, définissez le logger log4j dans le code Java et transférez le journal dans Redis :

import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;

public class Log4jDemo {
   private static Logger logger = Logger.getLogger(Log4jDemo.class);
   private static Jedis jedis = new Jedis("localhost");

   public static void main(String[] args) {
      logger.debug("Hello, World!");
      jedis.lpush("log", "Hello, World!");
   }
}
Copier après la connexion

Ici, nous définissons un objet Logger et utilisons la méthode de débogage pour afficher "Hello, World !". En même temps, nous utilisons des objets Jedis pour placer les journaux dans une liste nommée log.

Ensuite, nous pouvons utiliser un autre processus Java pour lire tous les enregistrements de la liste des journaux et les traiter.

Ce qui précède est une introduction détaillée et des exemples de code de Redis en tant qu'outil secret pour le traitement des journaux en temps réel. En général, Redis offre des performances et une évolutivité très puissantes et peut être utilisé pour des tâches de traitement de journaux dans divers scénarios.

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