重新缓存4分钟内
#初学者 #node #redis #caching

什么是缓存,为什么首先使用它?
缓存意味着将远程数据本地存储在您的系统上,以更快地重新访问。

我的意思是更快地重新访问?
假设有一个庞大的数据库(db),用户希望从如此大的DB中访问一个帖子。每次用户想要访问帖子时,系统将需要一些时间,因为系统将在DB中按顺序搜索指定的帖子。
示例 - 我想查看7后7的数据,然后将在DB中顺序搜索数据,因此需要时间。

Image description

那么如何减少此请求响应等待时间?
因此,缓存的步骤,可以与节点表达式API一起使用Redis-caching,以更快地获取数据。通过重新启动,创建了内存数据存储,该数据存储会创建键值对,从而更快地进行了数据重新估算。
每当我们在数据库中搜索DATA时,我们的API就会首先检查键是否存在Redis-Datastore中,如果存在,则会以较少的时间和快速响应返回数据,否则我们可以缓存(存储)不是缓存数据,而是在其数据存储中创建新的键值对,以快速数据重新访问以前访问的相同数据。

redis键值数据存储演示:

Image description

注意 - 您还可以找到以下源代码:
https://github.com/SimardeepSingh1450/redis-in-4-minutes

因此,让我们开始制作自己的redis-api:

首先,您需要在计算机上安装redis:
访问http://redis.io和设置Redis-Server。

创建一个文件夹,使用:mkdir myRedisApi
进入文件夹中:cd myRedisApi并创建index.js文件。

在下面的终端类型中,命令创建package.json文件:

npm init -y

在下面的终端类型中命令安装required npm packages

npm i redis express nodemon

在终端启动本地机器Redis-Server:

redis-server

看起来像这样:

Image description

现在在您的index.js中放置以下代码来创建一个简单的Express API:

const express = require('express');

const app = express();
app.use(express.json());

app.listen(8080,()=> {
    console.log('Server is listening on port-8080');
})

现在在package.json中进行以下更改:

Image description

现在打开另一个终端以启动此服务器类型:

npm run devStart

现在,在index.js中以此顺序将REDIS-SETUP代码放在:

const express = require('express');
const redis = require('redis');

//redis-setup-code
const redisUrl = "redis://127.0.0.1:6379"
const client = redis.createClient(redisUrl);
client.connect();
client.on('connect',(err)=>{
    console.log('Redis connected!')
})

const app = express();
app.use(express.json());
...

redisUrl = redis://localhost:portNumberredis.createClient(redisUrl)在这里创建我们的客户端以连接到
redis-server.

index.js中粘贴以下代码以执行操作:
1. 使用 post 请求:
存储新{key,value}对

app.post('/setKeyValue',async(req,res)=>{
    const {key,value} = req.body;
    console.log(key,value);
    await client.set(key,JSON.stringify(value));
    console.log(`${key}:${value} has been set`)
    res.json(`${key}:${value} has been set`);
})
22

app.get('/:key',async(req,res)=>{
    const key = req.params.key;
    let cachedData = await client.get(key);
    if(cachedData){
        res.json(JSON.parse(cachedData));
    }else{
        res.json(`The Key(${key}) has no matching value in redis`)
    }
})

您的最终index.js代码应该是这样的:

const express = require('express');
const redis = require('redis');

//redis-setup-code
const redisUrl = "redis://127.0.0.1:6379"
const client = redis.createClient(redisUrl);
client.connect();
client.on('connect',(err)=>{
    console.log('Redis connected!')
})

const app = express();
app.use(express.json());

app.post('/setKeyValue',async(req,res)=>{
    const {key,value} = req.body;
    console.log(key,value);
    await client.set(key,JSON.stringify(value));
    console.log(`${key}:${value} has been set`)
    res.json(`${key}:${value} has been set`);
})

app.get('/:key',async(req,res)=>{
    const key = req.params.key;
    let cachedData = await client.get(key);
    if(cachedData){
        res.json(JSON.parse(cachedData));
    }else{
        res.json(`The Key(${key}) has no matching value in redis`)
    }
})

app.listen(8080,()=> {
    console.log('Server is listening on port-8080');
})

使用Postman:
测试我们的redis-datastore 1.索斯请求:

Image description

2.get请求:

Image description

您可以清楚地看到响应只花了9毫秒,因此数据的快速重述。

Image description

您现在已经获得了在任何API中实施Redis的知识,因此有时间进行一些作业:

尝试使用MongoDB,MySQL等数据库进行REDIS API,并在有或不实施REDIS的情况下查看数据响应时间的差异。