NodeJS 程序中使用 Redis
由于国庆期间老婆大人突然在车上看见前面车牌灵魂发问说 湘F
是哪里 😱我哪知道在哪,我只能回了句:我也不晓得😂。为了避免再次发生类似的灵魂发问,我就写了个微信小程序方便查询,机智😜
数据都是在网上爬取,如果有兴趣了解怎么爬可以查看上篇文章 [NodeJS 爬新闻];数据爬取下来后,发现可以增加查询地点基本信息的功能,嗯,感谢百度百科。
由于考虑到是实时爬取数据,我想这些地点信息可能是万年不变,所以就引入了 Redis 缓存来处理。
本地安装
本地使用 win 10 系统。
- 下载对应的程序,解压到本地
- 进入目录运行命令
./redis-server.exe redis.windows.conf
具体 Redis 的安装可以查看 菜鸟教程
程序依赖包
下载 redis 安装包
shell
yarn add redis
开启服务
引用对应的包,连接服务
javascript
const redis = require('redis');
const redisClient = redis.createClient({
host: '127.0.0.1', // 默认 host
port: '6379' // 默认端口
});
数据操作
可以使用 promisify
来包装操作变成异步函数
javascript
const redis = require('redis');
const { promisify } = require("util");
const config = require('../config');
const redisClient = redis.createClient(config.REDIS_PORT);
redisClient.on("error", function (err) {
console.log("Error " + err);
});
function Client() {
this.set = promisify(redisClient.set).bind(redisClient);
this.get = promisify(redisClient.get).bind(redisClient);
return this;
}
const client = new Client();
module.exports = client
在需要操作数据时引用操作
javascript
const redisStore = require('../utils/redis');
const getBaike = async (site) => {
console.log(`site: ${site}`);
if (!site) {
return null;
}
...
const data = {
introduce,
basicInfo
};
await redisStore.set(site, JSON.stringify(data));
return data;
};
module.exports = async (ctx, next) => {
await next();
const { site } = ctx.query;
const cacheData = await redisStore.get(site);
const baike = cacheData ? JSON.parse(cacheData) : await getBaike(site);
ctx.type = 'json';
ctx.body = {
baike
}
}
一个简单的 Redis 服务操作就完成了。
注意
由于生产环境是 Linux,启动 Redis 服务时不可能还是这种前端启动模式,故我们需要修改 redis.conf
配置, daemonize yes
以后端模式启动。
再次执行启动服务
powershell
cd /opt/redis
./bin/redis-server ./redis.conf
连接 redis
powershell
/opt/redis/bin/redis-cli
最后
利用自己掌握的知识来解决生活中碰到的一些问题,感觉还不错,大家可以体验下或者有好的想法,大家一起交流。
参考: