No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Conectando el microservicio a Redis

26/29
Recursos

Aportes 17

Preguntas 3

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

No recuerdo otro curso en que se hayan visto tantos temas en el desarrollo del proyecto y tan bien explicados.

Muy curiosos como se tomaron la molestia de editar el video para cubrir la contrase帽a y otros datos de acceso y luego los dejan expuestos en el c贸digo XD

Lo que vamos hacer es traer data de mysql, guardarla en redis. Pero cada vez que mi API solicite data, primero revisa en redis, si est谩 all铆 la trae, si no entonces va y la trae de mysql. Estoy bien?

A alguien m谩s le esta saliendo este error a la hora de generar el redis client?

Ready check failed: NOAUTH Authentication required

En el metodo list, en caso de existir data, no deberia ser JSON.parse(data) en lugar de de stringify?, es decir, si lo que esta almacenado es una cadena de texto, no deberiamos convertir esa cadena a json al retornarlo?

Si no les hes posible conectarse a la nube para trabajar con redis desde all铆, siempre pueden usar una imagen de docker Redis

Si a煤n no saben usar docker, recomiendo tomar el curso del profe Guido Vilari帽o, de ca ruta de DevOps. M谩s que perfecto para continuar aprendiendo Microservicios, DevOps, aplicaciones distribuidas, etc.

la gran incertidumbre que siempre tuve es: que pasa si tengo una base de 20 millones de clientes鈥 todos los 20 millones tengo que traerlos al redis?? la memoria tendra suficiente espacio para almacenar tanta data?

const redis = require('redis');

const config = require('../config');

const client = redis.createClient({
    host: config.redis.host,
    port: config.redis.port,
    password: config.redis.password,
});

function list(table) {
    return new Promise( (resolve, reject) => {
        client.get(table, (err, data) => {
            if (err) return reject(err);

            let res = data || null
            if (res)
                res = JSON.stringify(res);
            
            resolve(res);
        })
    })
}

function get(table, id) {
    const search = `${table}_${id}`;
    returnlist(search);
}

function upsert(table, data, action) {
    action = action || 'insert'
    let key = table;
    if (action !== 'insert')
        key = key + '_' + data.id;
    
    client.setex(key,10, JSON.stringify(data));
    return true;
}


module.exports = {
    list,
    get,
    upsert,
};```

Tip util para node:

Con el m贸dulo Util de Node podemos convertir una funci贸n con callbacks en una promesa.

const { promisify } = require("util");
const getAsync = promisify(client.get).bind(client);

getAsync.then(console.log).catch(console.error);

O tambi茅n podemos implementar async await.

Reto resuelto:

const redis = require('redis');
const config = require('../config');

const client = redis.createClient({
    host: config.redis.host,
    port: config.redis.port,
    password: config.redis.password
});

function list(table) {
    return new Promise((resolve, reject) => {
        client.get(table, (error, result) => {
            if(error) return Promise.reject(error);
            const resp = JSON.parse(result);
            resolve(resp);
        })
    }); 
}

function get(table, id) {
    const key = `${table}_${id}`;
    return list(key);
}

async function upsert(table, data) {
    let key = table;
    if(data && data.id) {
        key += `_${data.id}`;
    }
    client.setex(key, 60, JSON.stringify(data));
    return true;
}

module.exports = {
    list,
    get,
    upsert
};

Creo que en la funci贸n list, si nos llega la data de Redis deber铆amos usar:

JSON.parse(data)

Para convertir el JSON a un objeto (estoy suponiendo que Redis nos env铆a la informaci贸n en a formato JSON)

Boooom! Muy buena esta clase! 馃槃

Excelente ejercicio

No sab铆a que en un solo proyecto se pod铆an usar bases de datos relacionales y no relacionales al mismo tiempo (de distintas formas claro), es genial este curso.

Tengo un projecto en una maquina virtual ubuntu y pues no estoy usando ese redislab sino que me instale la plataforma de Redis y pues le Cambie el password (requirepass) del archivo /etc/redis/redis.conf teniendo en cuenta un tutorial de un blog de digitalOcean, asi mismo hago ese archivo de configuracion del client en node como esta clase o que le hago de diferencia?

Alguien sabe de alguna herramienta gratuita o plugin para Webstorm (por ejemplo) para visualizar tus datos de la DB Redis?