Buen tutorial Iván. Tengo una duda sobre MemoryCache. ¿Qué ocurre si se cambia/edita un campo de la Empresa como por ejemplo el número de fax?, ¿Se entera la empresa que està en caché o hay que editarla cada vez que se haga un PUT(edición) de Empresa? El punto final de usar MemoryCache + Redis no lo entiendo muy bien, parece redundante, no? Muchas gracias por tus tutoriales.
Ayer levanté un docker con redis para probar y no había visto este vídeo tuyo, muy buena explicación (de las mejores que encontré en dos días). Has dejado claro como se debería usar y los diferentes casos concretos, pero se me plantea una duda. ¿Cómo actualizo la cache? (sea cual sea). Creo que la respuesta es con event sourcing, quizás con un RabbitMQ como has mostrado en tus vídeos de sistemas distribuidos, actualizando los datos de las caches cada vez que se realiza la llamada, pero no me queda claro si es buena idea en sistemas h24/365, por lo llamado "degradación de la memoria" que me da a mi que me lo enseñaron en su día y es algo desfasado que no pasa a día de hoy, pero en cualquier caso ¿MemoryCache y redis rehubican la memoria de tanto en tanto para prevenir esto? ¿Es buena idea borrar los datos cada cierto tiempo? Perdón por extenderme tanto, un saludo y gracias.
dependerá un poco de como lo tengas montado la verdad, por ejemplo no vas a montar todo event sourcing solo para esto, directamente actualizas en redis y ya. Luego depende puedes hacer dos cosas, una es invalidar el registro cuando actualizas algo que exista, y lo elimina y la siguiente vez que leas, guardaras la información en redis (como si no la hubieras tenido antes) y la otra es directamente actualizar, que es la que yo hago, si te digo la verdad no se si hay alguna diferencia 🤣 Respecto a la degradación de memoria ni idea, pero yo he tenido cosas meses sin actualizar y ningún problema, la verdad, dudo que sea un problema hoy en día.
Buenas NetMentor. Muchas gracias por el video. Ha sido muy claro. La primer duda que se me viene a la mente es como mantener sincronizada la data en cache tanto memory como redis indistintamente del origen de la data que estamos guardando (microservicio, db, disco, etc). Existe alguna estrategia para esto? Saludos desde Argentina.
La cosa es, que cada vez que modificas el valor en origen debes actualizar el valor que tienes en redis, ya sea enviado un evento a una app para que lo actualize, o directamente eliminando el registro de redis (asi la siguiente vez, volverá a leer de origen y almacenar. Cuando he utilzado esto, yo he utilizado kafka,, basicamente el origen ha indicado un evento "XcosaCambia" y es el trabajo de los que estan escuchando el entender ese mensaje y re-escribir en redis. Desde disco si que no lo he hecho nunca, pero no creo que nadie actualize ficheros manualmente. Un saludo!
Muchas gracias por compartir y explicar de forma tan clara, felicidades por tu canal. ¿Me podrias platicar un poco del software que usas para grabar tu camara y el codigo? ¿Usas streamlabs / OBS?
Hola pues no tiene mucho misterio, si utilzo obs, tanto para la cara como para el código, lo grabo todo a la vez, y luego para editar con el sony vegas que lo compre por 10€ en humblebundle hace varios años, pero vaya que para lo que edito yo, te vale cualquiera haah
Pues no sé si tendrás alguna comparación por ahí. Pero puedes hacerla tu muy fácilmente con la librería benchmark ruclips.net/video/boMBm6Dgvss/видео.html
Hola, nunca habia visto nada de caches en servicios http, ha sido muy instructivo. Ahora quiero hacer una pregunta, que puede ser una tonteria pero lo desconozco. En lugar del tipo cache distibuida que usas con redis, ¿no se podria usar una variable de una clase estatica que almacene el primer acceso? hasta donde se (que es posible que me equivoque) una variable estatica publica seria visible por todos los usuarios y mantendria el mismo valor. ¿es correcto o estoy completamente equivocado? Gracias Saludos
Pues depende un poco de la situación y del caso de uso, si es un monolito sí, sería "lo mismo", ya que todo el monolito va a acceder al mismo punto, pero si es un sistmema distribuido, multiples aplicaciones van a acceder al valor que está almacenado en redis. Tiene otras diferencias, por ejemplo, aunque vuelvas a desplegar la aplicacación en redis sigue siendo persistente pero en una variable estática lo perderías. Anteriormente, antes de los sistemas distribuidos y tal, si se hacia con la varíable estática, hoy en dia yo lo haría o con redis, para múltiples microservicios o incluso memoryCache, que funciona igual que la variable estática, pero puedes definir reglas como "eliminar despues de tnato tiempo" y tal. Un saludo!
Blog: www.netmentor.es/Entrada/cache-distribuida-redis
Twitter: twitter.com/NetMentorTW
Hace tiempo que buscaba esta información. Tu explicación fue muy clara y me gustó la idea de usar redis con docker. Muchas gracias!
Tus vídeos son los mejores , eres un jefe.
Buenisimo.... gracias por esa explicacion sencilla ....
sos un crack, gracias!
Milei 2023 🦁
Muchas gracias, valiosa información
Gracias a ti :)
Muchas gracias por tu videos. Me han servido mucho para implementar esto en mis proyectos.
Muy buen video, bastante bien explicado y las explicaciones con las diapositivas es un 10 de 10
Gracias :D
Maestro, siempre son útiles tus videos
excelente video, todo se entendio muy simple
Muy buen vídeo máquina 💪🏻
Muy buen video!
Buen tutorial Iván.
Tengo una duda sobre MemoryCache. ¿Qué ocurre si se cambia/edita un campo de la Empresa como por ejemplo el número de fax?, ¿Se entera la empresa que està en caché o hay que editarla cada vez que se haga un PUT(edición) de Empresa?
El punto final de usar MemoryCache + Redis no lo entiendo muy bien, parece redundante, no?
Muchas gracias por tus tutoriales.
Ayer levanté un docker con redis para probar y no había visto este vídeo tuyo, muy buena explicación (de las mejores que encontré en dos días).
Has dejado claro como se debería usar y los diferentes casos concretos, pero se me plantea una duda. ¿Cómo actualizo la cache? (sea cual sea). Creo que la respuesta es con event sourcing, quizás con un RabbitMQ como has mostrado en tus vídeos de sistemas distribuidos, actualizando los datos de las caches cada vez que se realiza la llamada, pero no me queda claro si es buena idea en sistemas h24/365, por lo llamado "degradación de la memoria" que me da a mi que me lo enseñaron en su día y es algo desfasado que no pasa a día de hoy, pero en cualquier caso ¿MemoryCache y redis rehubican la memoria de tanto en tanto para prevenir esto? ¿Es buena idea borrar los datos cada cierto tiempo?
Perdón por extenderme tanto, un saludo y gracias.
dependerá un poco de como lo tengas montado la verdad, por ejemplo no vas a montar todo event sourcing solo para esto, directamente actualizas en redis y ya.
Luego depende puedes hacer dos cosas, una es invalidar el registro cuando actualizas algo que exista, y lo elimina y la siguiente vez que leas, guardaras la información en redis (como si no la hubieras tenido antes) y la otra es directamente actualizar, que es la que yo hago, si te digo la verdad no se si hay alguna diferencia 🤣
Respecto a la degradación de memoria ni idea, pero yo he tenido cosas meses sin actualizar y ningún problema, la verdad, dudo que sea un problema hoy en día.
Podrías mostrar como usar redis para el manejo de sesiones de usuario en microservicios, ¡saludos!
pues no tenia pensado (almenos por ahora) el hacer un video sobre redis con JWT pero lo tendré en mente, un saludo!
Buenas NetMentor. Muchas gracias por el video. Ha sido muy claro. La primer duda que se me viene a la mente es como mantener sincronizada la data en cache tanto memory como redis indistintamente del origen de la data que estamos guardando (microservicio, db, disco, etc). Existe alguna estrategia para esto? Saludos desde Argentina.
La cosa es, que cada vez que modificas el valor en origen debes actualizar el valor que tienes en redis, ya sea enviado un evento a una app para que lo actualize, o directamente eliminando el registro de redis (asi la siguiente vez, volverá a leer de origen y almacenar.
Cuando he utilzado esto, yo he utilizado kafka,, basicamente el origen ha indicado un evento "XcosaCambia" y es el trabajo de los que estan escuchando el entender ese mensaje y re-escribir en redis. Desde disco si que no lo he hecho nunca, pero no creo que nadie actualize ficheros manualmente.
Un saludo!
Muchas gracias por compartir y explicar de forma tan clara, felicidades por tu canal. ¿Me podrias platicar un poco del software que usas para grabar tu camara y el codigo? ¿Usas streamlabs / OBS?
Hola pues no tiene mucho misterio, si utilzo obs, tanto para la cara como para el código, lo grabo todo a la vez, y luego para editar con el sony vegas que lo compre por 10€ en humblebundle hace varios años, pero vaya que para lo que edito yo, te vale cualquiera haah
@@NetMentor gracias, ¿podrias compartir donde consigues el layer del marco de tu webcam o es parte de la edicion con Vegas?
La layer con la imagen la hice yo con el gimp y es una capa encima de la camara en el obs, un saludo
Muy bueno! una pregunta donde puedo encontrar un comparador (en segundos o milisegundos) de la respuesta en cache vs la de base de datos?
Pues no sé si tendrás alguna comparación por ahí. Pero puedes hacerla tu muy fácilmente con la librería benchmark
ruclips.net/video/boMBm6Dgvss/видео.html
Hola, nunca habia visto nada de caches en servicios http, ha sido muy instructivo. Ahora quiero hacer una pregunta, que puede ser una tonteria pero lo desconozco. En lugar del tipo cache distibuida que usas con redis, ¿no se podria usar una variable de una clase estatica que almacene el primer acceso? hasta donde se (que es posible que me equivoque) una variable estatica publica seria visible por todos los usuarios y mantendria el mismo valor. ¿es correcto o estoy completamente equivocado?
Gracias
Saludos
Pues depende un poco de la situación y del caso de uso, si es un monolito sí, sería "lo mismo", ya que todo el monolito va a acceder al mismo punto, pero si es un sistmema distribuido, multiples aplicaciones van a acceder al valor que está almacenado en redis.
Tiene otras diferencias, por ejemplo, aunque vuelvas a desplegar la aplicacación en redis sigue siendo persistente pero en una variable estática lo perderías.
Anteriormente, antes de los sistemas distribuidos y tal, si se hacia con la varíable estática, hoy en dia yo lo haría o con redis, para múltiples microservicios o incluso memoryCache, que funciona igual que la variable estática, pero puedes definir reglas como "eliminar despues de tnato tiempo" y tal.
Un saludo!