Maison >interface Web >js tutoriel >Créer un magasin Redis simple avec Node.js

Créer un magasin Redis simple avec Node.js

DDD
DDDoriginal
2024-10-22 06:22:30790parcourir

Building a Simple Redis Store with Node.js

Hé les copains ! ?

J'ai joué avec Node.js et j'ai décidé de créer un magasin clé-valeur léger en mémoire qui imite une version simple de Redis. Si vous souhaitez vous lancer dans le réseautage dans Node.js, ou si vous aimez simplement explorer des projets parallèles amusants, celui-ci est fait pour vous !

? Principales caractéristiques :

  • Commandes prises en charge :
    • SET key value - Stocke les paires clé-valeur.
    • GET key - Récupère la valeur d'une clé.
    • Clé DELETE - Supprime une paire clé-valeur.
  • Utilise le module net de Node.js pour créer un serveur TCP pour gérer les connexions client.
  • Un magasin Redis très simple, idéal pour des tests rapides ou pour apprendre les interactions TCP !

⚙️ Aperçu du code :

const net = require('net');

class SimpleRedis {
  constructor() {
    this.store = {};
  }

  set(key, value) {
    this.store[key] = value;
  }

  get(key) {
    return this.store[key] || null;
  }

  delete(key) {
    delete this.store[key];
  }
}

// Initialize store
const store = new SimpleRedis();

// Create a TCP server
const server = net.createServer((socket) => {
  console.log('Client connected');

  socket.on('data', (data) => {
    const command = data.toString().trim().split(' ');
    const action = command[0].toUpperCase();

    let response = '';

    switch (action) {
      case 'SET':
        const [key, value] = command.slice(1);
        store.set(key, value);
        response = `>> OK\n`;
        break;
      case 'GET':
        const keyToGet = command[1];
        const result = store.get(keyToGet);
        response = result ? `>> ${result}\n` : '>> NULL\n';
        break;
      case 'DELETE':
        const keyToDelete = command[1];
        store.delete(keyToDelete);
        response = `>> OK\n`;
        break;
      default:
        response = '>> Invalid command\n';
    }

    // Send the response with '>>'
    socket.write(response);
  });

  socket.on('end', () => {
    console.log('Client disconnected');
  });
});

// Start the server on port 3001
server.listen(3001, () => {
  console.log('Server is running on port 3001');
});

? Ce qui se passe:

  • Le serveur écoute sur le port 3001 et répond aux commandes SET, GET et DELETE.
  • C'est super simple et direct : envoyez simplement une commande à partir de n'importe quel client TCP comme telnet ou netcat, et voyez vos commandes en action !

? Pour l'essayer :

  1. Enregistrez le code sous simpleRedis.js.
  2. Exécutez-le avec le nœud simpleRedis.js.
  3. Ouvrez un nouveau terminal et connectez-vous-y en utilisant :
   telnet localhost 3001
  1. Vous pouvez désormais interagir avec votre magasin de valeurs-clés en mémoire !

Par exemple :

SET name Hoang
GET name
>> Hoang
DELETE name
GET name
>> NULL

Github
Essayez-le ! ? Faites-moi savoir ce que vous pensez ou comment vous souhaiteriez prolonger cela.


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