因为国庆期间老婆大人忽然在车上看见后面车牌灵魂提问说 湘F 是哪里 ????我哪晓得在哪,我只能回了句:我也不知道????。为了防止再次发生相似的灵魂提问,我就写了个微信小程序不便查问,机智????


数据都是在网上爬取,如果有趣味理解怎么爬能够查看上篇文章 [[NodeJS 爬新闻]](https://www.yuque.com/mondo/d...;数据爬取下来后,发现能够减少查问地点根本信息的性能,嗯,感激百度百科。


因为思考到是实时爬取数据,我想这些地点信息可能是万年不变,所以就引入了 Redis 缓存来解决。

本地装置

本地应用 win 10 零碎。

  • 下载对应的程序,解压到本地
  • 进入目录运行命令 ./redis-server.exe redis.windows.conf


具体 Redis 的装置能够查看 菜鸟教程

程序依赖包

下载 redis 安装包

yarn add redis

开启服务

援用对应的包,连贯服务

const redis = require('redis');const redisClient = redis.createClient({    host: '127.0.0.1', // 默认 host  port: '6379' // 默认端口});

数据操作

能够应用 promisify 来包装操作变成异步函数

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

在须要操作数据时援用操作

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 当前端模式启动。

再次执行启动服务

cd /opt/redis./bin/redis-server ./redis.conf

连贯 redis

/opt/redis/bin/redis-cli

最初

利用本人把握的常识来解决生存中碰到的一些问题,感觉还不错,大家能够体验下或者有好的想法,大家一起交换。


参考:

  • Linux下redis装置和部署
  • Redis 教程