栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

egg(十九):使用egg-redis性能优化,缓存数据提升响应效率

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

egg(十九):使用egg-redis性能优化,缓存数据提升响应效率

前言:         在写一些大数据量的接口时候,发现响应速度太慢了,接口,通常一次要8s-12s,这么长的响应时长,给用户带来了极大的不便,这里来利用缓存方法,来对接口进行优化,第一次响应完以后,把数据缓存起来,之后用缓存数据来做一些数据操作。 操作步骤: 1、电脑安装redis工具 window:

github分享:入口

个人网盘分享(推荐)

链接:https://pan.baidu.com/s/1c4mBdwhxJshvC3i_fI2_gg 

提取码:

5ntg
linux安装
查看系统是否安装redis
yum info redis
 
如果没有安装,执行以下步骤
安装epel库
yum install epel-release -y
安装redis
yum install redis -y
 
操作
启动:systemctl start redis
重启:systemctl restart redis
关闭:systemctl stop redis
 
设置开机启动
systemctl enable redis
mac安装
brew install redis
 
brew services start redis
 
redis-server /usr/local/etc/redis.conf
2、电脑运行刚安装的redis工具 (1)把刚下载的安装包放到你的文件夹中,打开是这个文件压缩包,然后解压

 (2)解压后的文件,找到 redis-server.exe  这个是启动服务的快捷键,点击

 (3)出现下面的画面,代表服务启动了,端口号是6379

 (4)cmd弹框中动态添加,查看缓存内容
myKey是你的key值,abc是具体的value值


设置键值对 set myKey abc
查看键值对 get myKey

1)注意,刚刚第3步打开的服务不能关闭,再次打开一个cmd弹框

2)输入     redis-cli.exe -h 127.0.0.1 -p 6379 ,如果出现其他报错,不要着急,

 3)更换命令输入     .redis-cli.exe -h 127.0.0.1 -p 6379   ,看到下面的这个服务,就表示成功了

 4)输入我们的设置命令,然后回车

 set demo 123456 

5)获取我们刚设置的缓存内容,注意,我们没有设置果abc,所以拿到的是(nil),我们设置了demo,就可以看到具体内容

get abc

3、egg项目中的操作 (1)项目安装插件
npm i egg-redis -S
2、config/plugin.js中引入插件
exports.redis = {
    enable: true,
    package: 'egg-redis'
}
3、config.default.js中配置连接地址
config.redis = {
  client: {
    port: 6379,
    host: '127.0.0.1',
    password: 'auth', 
    db: 0
  }, 
}
4、service下 新建一个服务文件redis.js

const Service = require('egg').Service;
const time = 60 * 60 * 24 * 365 //默认缓存失效时间 365天
class RedisService extends Service {
  // 设置
  async set(key, value, seconds) {
    // seconds 有效时长
    let { redis } = this.app;
    value = JSON.stringify(value);
    if(!seconds){
      // await redis.set(key, value);
      await redis.set(key, value, 'EX', time);
    }else{
      // 设置有效时间
      await redis.set(key, value, 'EX', seconds);
    }
  }
  // 获取
  async get(key) {
    let { redis } = this.app;
    let data = await redis.get(key);
    if (!data) return;
    data = JSON.parse(data);
    return data;
  }
  // 清空redis
  async flushall() {
    let { redis } = this.app;
    redis.flushall();
    return;
  }
}
module.exports = RedisService;
 5、方法中具体使用

(1)获取

let xiaoshuo = await this.app.redis.get('xiaoshuo1');

(2)设置

let str = 123
await this.app.redis.set('xiaoshuo1', str);
6、具体业务使用
async getXiaoshuo1() {
    let xiaoshuo = await this.app.redis.get('xiaoshuo1');
    //如果有缓存数据,就直接使用缓存
    if(xiaoshuo){
        this.ctx.body = {
              code:200,
              masg:'success',
              data: {
                list:xiaoshuo 
              }
            }
        return
    }
    //获取mysql数据
    let allList = await this.app.mysql.query(initSql);
    this.ctx.body = {
      code:200,
      masg:'success',
      data: {
        list:allList
      }
    };

}
7、如果你想测试请求接口的时间和使用了缓存以后的时间,测试方法
console.time() // 开始计时

let goodsList = await this.service.redis.get('goodsList');
if (!goodsList) {
  console.log('没有redis缓存')
  goodsList = await this.app.mysql.select('goods');
  this.service.redis.set('goodsList', goodsList);

}

console.timeEnd() // 打印时长
await this.ctx.body = goodsList;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027466.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号