es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consulte Redis de manera eficiente.

Estoy construyendo una aplicación de billetera y estoy utilizando Redis para cachear el saldo actual de la billetera de un usuario. Me pidieron que obtuviera la suma del saldo completo de todos los usuarios que utilizan la aplicación. He estado buscando una forma de consultar Redis para obtener estos datos ya que se almacenan en caché allí.

Las claves que utilicé para guardar estos datos son user_id-current-balance. ¿Existe alguna forma de obtener todas las claves que terminan con -current-balance y luego recuperar todos los datos que contienen? ¿Hay una mejor manera de hacer esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de recuperar todas las claves que terminan con -current-balance y sus valores correspondientes en Redis. Se puede utilizar el comando KEYS de Redis para obtener una lista de todas las claves que coinciden con un patrón, y luego usar el comando MGET para recuperar los valores de todas esas claves en una sola operación.

    Aquí hay un ejemplo de cómo se pueden utilizar estos comandos para recuperar la suma del saldo completo de todos los usuarios:

    const redis = require('redis');
    const client = redis.createClient();
    
    client.keys('*-current-balance', (err, keys) => {
      if (err) {
        console.error(err);
        return;
      }
    
      if (keys.length === 0) {
        console.error('No hay claves que coincidan con el patrón');
        return;
      }
    
      client.mget(keys, (err, values) => {
        if (err) {
          console.error(err);
          return;
        }
    
        const sum = values.reduce((acc, val) => acc + parseFloat(val), 0);
    
        console.log('Suma de todos los saldos:', sum);
      });
    });
    

    Este código recupera todas las claves que terminan con -current-balance, luego recupera sus valores usando MGET, y finalmente calcula la suma de todos esos valores.

    Tenga en cuenta que el uso de KEYS con un patrón comodín puede ser lento y potencialmente afectar el rendimiento de Redis. Si espera un gran número de claves que coincidan con el patrón, es posible que desee considerar el uso del comando SCAN de Redis en su lugar, que le permite iterar sobre las claves en lotes pequeños.

Comments are closed.