Almacenar datos en caché con Expressjs
8838 단어 nodeexpressjsjavascriptbackend
¿Qué es el almacenamiento en caché?
En informática, una memoria caché es una capa de almacenamiento de datos de alta velocidad que almacena un subconjunto de datos, normalmente transitorios, de modo que las solicitudes futuras de dichos datos se atienden con mayor rapidez que si se debe acceder a los datos desde la ubicación de almacenamiento 교장. El almacenamiento en caché permite reutilizar de forma eficaz los datos recuperados o procesados anteriormente.
¿Cómo funciona el almacenamiento en caché?
Los datos en una memoria caché suelen almacenarse en una acceso rápido, como la memoria de acceso aleatorio (RAM) y también puede utilizarse junto con un componente de 소프트웨어. El objetivo principal de la caché es aumentar el rendimiento de recuperación de datos para evitar tener que acceder a la capa subyacente de almacenamiento, que es más lenta.
Al intercambiar capacidad por velocidad, una memoria caché normalmente almacena un subconjunto de datos de forma transitoria, a diferencia de las bases de datos cuyos elementos suelen ser completos y duraderos.
Ahora que sabemos todo esto gracias a Amazon Web Services, vamos a ver las diferentes formas de almacenar en caché:
Los datos en una memoria caché suelen almacenarse en una acceso rápido, como la memoria de acceso aleatorio (RAM) y también puede utilizarse junto con un componente de 소프트웨어. El objetivo principal de la caché es aumentar el rendimiento de recuperación de datos para evitar tener que acceder a la capa subyacente de almacenamiento, que es más lenta.
Al intercambiar capacidad por velocidad, una memoria caché normalmente almacena un subconjunto de datos de forma transitoria, a diferencia de las bases de datos cuyos elementos suelen ser completos y duraderos.
Ahora que sabemos todo esto gracias a Amazon Web Services, vamos a ver las diferentes formas de almacenar en caché:
Los navegadores por defeo traen una pequeña caché, estas pueden ser utilizadas por las API'S que los navegadores nos proportcionan como sessionStorage y localStorage.
Esto va a dependency de como se use y en qué lenguaje pero la gran mayoría trae soporte para cachear datos a través de él, en el caso de NodeJs por ejemplo tenemos node-cache.
La ventaja de utilizar este tipo de almacenamiento es que no tendremos problemas con la persistencia o la seguridad de los datos, ya que para esto utilizamos herramientas como redis, que es una base de datos que fue creada con el propósito de poder almacenar datos en memoria , aunque también puede ser utilizada como base de datos persiste.
Ejemplo 실제 콘 Expressjs
Mi blog fue construido sobre Expressjs y de base de datos utilizo MongoDB, usa la arquitectura REST y en este caso vamos a usar la memoria caché para almacenar la lista de post existentes y poder devolvérselas al usuario de una forma más rápida.
Lo primero que vamos a hacer es requerir node-cache, y luego instanciarlo en una variable para poder usarlo. Al instanciar la clase NodeCache también le decimos el tiempo de vida en el que queremos que se persistan los datos en la memoria caché, en este caso lo hacemos por 10 segundos.
const NodeCache = require('node-cache');
const myCache = new NodeCache({stdTTL: 10});
Después de eso lo que hacemos es que antes de poder enviarle los datos de la Consulta de la base de datos al usuario, la vamos a guardar en la caché a través de la variable myCache, esto lo hacemos con el método set, donde primero especificamos la key con la que identificaremos a los datos y luego le pasamos los datos.
Después de esto volvemos al principio, en donde se hace la petición, y verificamos si los datos guardados existen en caché, para eso utilizamos el método has y le pasamos la llave que responde a los datos guardados,en el caso de que exista lo devolveremos al usuario rápidamente, y sino es así vamos a Consultar a la base de datos, pero antes de devolvérselos vamos a guardarlo en caché.
router.get('/post/all', function(req, res, next){
if(myCache.has('result'))
{
res.send(myCache.get('result'))
console.log('Desde caché')
console.log(myCache.get('result'))
}
else
{
let posts = postModel.find({}, (err, result) => {
if(!result){
res.status(400,).send({message: 'Upss, posts not found'});
}
else{
myCache.set('result', result);
res.send(result);
console.log('Desde db')
console.log(result);
}
})
}
})
Ahora vamos a ver el resultado de todo esto, primero hacemos la misma Consulta pero nos traemos los datos directamente desde la db:
Ahora vamos a probarlo desde la memoria caché:
Como ven, logramos reduce bastante el tiempo de devolución de los datos Consultados a la db, y esto es solo en una aplicación pequeña, imagínense haciéndolo con imágenes, con videos y otro tipo de datos. 그럴 수 있습니다.
PD: Solo utilizar caché en peticiones GET.
Reference
이 문제에 관하여(Almacenar datos en caché con Expressjs), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/nahuelsegovia/almacenar-datos-en-cache-con-expressjs-283h
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const NodeCache = require('node-cache');
const myCache = new NodeCache({stdTTL: 10});
router.get('/post/all', function(req, res, next){
if(myCache.has('result'))
{
res.send(myCache.get('result'))
console.log('Desde caché')
console.log(myCache.get('result'))
}
else
{
let posts = postModel.find({}, (err, result) => {
if(!result){
res.status(400,).send({message: 'Upss, posts not found'});
}
else{
myCache.set('result', result);
res.send(result);
console.log('Desde db')
console.log(result);
}
})
}
})
Reference
이 문제에 관하여(Almacenar datos en caché con Expressjs), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nahuelsegovia/almacenar-datos-en-cache-con-expressjs-283h텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)