什么是缓存,为什么首先使用它?
缓存意味着将远程数据本地存储在您的系统上,以更快地重新访问。
我的意思是更快地重新访问?
假设有一个庞大的数据库(db),用户希望从如此大的DB中访问一个帖子。每次用户想要访问帖子时,系统将需要一些时间,因为系统将在DB中按顺序搜索指定的帖子。
示例 - 我想查看7后7的数据,然后将在DB中顺序搜索数据,因此需要时间。
那么如何减少此请求响应等待时间?
因此,缓存的步骤,可以与节点表达式API一起使用Redis-caching,以更快地获取数据。通过重新启动,创建了内存数据存储,该数据存储会创建键值对,从而更快地进行了数据重新估算。
每当我们在数据库中搜索DATA时,我们的API就会首先检查键是否存在Redis-Datastore中,如果存在,则会以较少的时间和快速响应返回数据,否则我们可以缓存(存储)不是缓存数据,而是在其数据存储中创建新的键值对,以快速数据重新访问以前访问的相同数据。
redis键值数据存储演示:
注意 - 您还可以找到以下源代码:
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
看起来像这样:
现在在您的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
中进行以下更改:
现在打开另一个终端以启动此服务器类型:
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:portNumber
和redis.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`);
})
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.索斯请求:
2.get请求:
您可以清楚地看到响应只花了9毫秒,因此数据的快速重述。
您现在已经获得了在任何API中实施Redis的知识,因此有时间进行一些作业:
尝试使用MongoDB,MySQL等数据库进行REDIS API,并在有或不实施REDIS的情况下查看数据响应时间的差异。