nodejs + Koa2 之Redis安装使用

本机Redis的安装

【mac系统为栗子】

下载

打开官网:https://redis.io/
Download—Stable—Download6.0.4,下载最新稳定版,这里是6.0.4

安装

1.下载完成后,打开命令行工具,执行解压命令(如可以双击解压就更好)

tar zxvf redis-6.0.4.tar.gz

2.将解压后文件夹放到/usr/local

mv redis-6.0.4 /usr/local

3.切换到相应目录

cd /usr/local/redis-6.0.4

4.编译测试

sudo make test

执行后成功如图所示
在这里插入图片描述
5.编译安装

sudo make install

在这里插入图片描述
6.启动Redis

redis-server

在这里插入图片描述

在项目中使用Redis

安装依赖

npm install redis --save

安装oredis包

npm install ioredis --save

创建Redis.js

首先,新建配置文件 Redis.js (文件名可变,根据你项目的需求),目录如下
在这里插入图片描述
文件代码


const redisStore = require('koa-redis')
const Redisdb = require('ioredis')

module.exports = class Redis {
  constructor () {
    this.config = {
      port: 6379,
      host: '127.0.0.1',
      db: 0
    }
    this.client = new Redisdb(this.config)
    this.options = { client: this.client, db: 0 }
    this.store = redisStore(this.options)
  }

  async storeClient () {
    return this.store.client
  }

  async set (key, value, expiryMode, time) {
    return this.client.set(key, value, expiryMode, time)
  }

  async get (key) {
    return this.client.get(key)
  }

  async hmset (key, data) {
    return this.client.hmset(key, data)
  }

  async expire (key, time) {
    return this.client.expire(key, time)
  }

  async hmget (key) {
    return this.client.hgetall(key)
  }

  async getAllKey () {
    return this.client.keys('*')
  }
}

创建user用户存储到redis,并在缓存获取数据

1.准备工作,这里用到了依赖注入,inversify,将Redis注入到使用缓存的文件里,如下代码所示
UserService.js

将Redis注入进来,方便使用其方法

module.exports = class UserService {
  constructor (User, Describe, Redis) {
    this._User = User
    this._Describe = Describe
    this._Redis = Redis// redis注入UserService中
  }

创建用户,存入缓存中,调用Redis.js中hmset(key,data)方法

 async createUser (user) {
      const key = `${user.userName}_user` //设置key,因为会有多个用户创建
     const a = await this._Redis.hmset(key, user)
     return user
  }

获取用户信息,直接从缓存中获取,调用Redis.js中hmget(key)方法

  async getUsers () {  
    const keys = await this._Redis.getAllKey()//拿取内存中所有key
    const data = keys.filter(data => data.endsWith('_user'))//筛选出以_user结尾的文件
     let users = []//定义数组
    for (let usr of data) {
      const res = await this._Redis.hmget(usr)
      users.push(res)//遍历并return
    }
      return users  }

依赖注入文件,增加Redis
buildInversifyContainer.js
在这里插入图片描述
注入

  inversify.decorate(inversify.inject(types.Redis), context.UserService, 2)

context.js

function redisControllers () {
  const dirPath = path.join(__filename, '../../config/redis/models')
  const data = fs.readdirSync(dirPath)
    .map(file => require(path.join(dirPath, file)))
    .reduce((object, currentValue) => {
      object[currentValue.name] = currentValue
      return object
    }, {})
  return data
}
function buildContext () {
  const services = loadServices()
  const controllers = loadControllers()
  const redis = redisControllers()
  const context = {
    ...models,
    ...services,
    ...controllers,
    ...redis
  }

  delete context.Sequelize
  return context
}

调用创建的接口 ,成功后调用获取接口,拿到了证明成功了

验证存储是否成功

redis-cli -h 127.0.0.1 -p 6379
hmget xwr2r_user email//hmget key file
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值