Node.js : redis 和 ioredis 的基本使用

  • 前言
  • 正文
  • redie的安装和使用
  • ioredie的使用
  • 封装所需要用到的ioredis方法


前言

此篇内容记录本人编程过程中所遇到的一些问题和解决的办法。内容仅供参考,有些内容引用别处。[非商用,如侵删]

正文

因为项目的内容设计到缓存的知识点,所以在网上查询后决定初步学习一下node中对redis的一些基本操作,只接触到一些基本操作~

redie的安装和使用

github : https://github.com/microsoftarchive/redis/releases

官网https://redis.io/ 这两个搞不清有什么区别…有大佬知道的可以评论区告诉我一下

我选择的是下载github上的,图上标注了下载位置

nodejs redis设置数据有效期_nodejs redis设置数据有效期


下载过来是一个安装包,找到你要存放的位置 解压开就好了 他是个绿色的软件 解压即用!!赞!

然后每个文件具体的作用没有去深究 直接开始使用把 在该文件夹目录下输入cmd 就可以进入命令窗口了

nodejs redis设置数据有效期_nodejs_02


输入如下命令

.\redis-server.exe redis.windows.conf

就可以跳出图上显示的这个数据库一样的图标就说明启动了 ,接下去但是登录,然后这里要把prot 记一下 我的是6379 后面要用。
这里注意!!! 不要关闭这个窗口 也不要在这个命令行窗口中操作!!!
另外在这个文件夹目录下开一个窗口
输入如下命令:

.\redis-cli.exe -h 127.0.0.1 -p 6379

//-h 是你的ip地址 -p是端口号 就是刚刚的port 还有一个 -a 是密码 但是我目前没有设置 有需要的话 要在config里面设置下

如图 输入ping 返回PONG就是连接成功

nodejs redis设置数据有效期_数据库_03


在这个页面上的具体的操作命令连接 Redis 命令参考

然后就可以接下去下一步的ioredis操作了

ioredie的使用

安装的话就和正常的安装nodejs里的包一样
npm和yarn两种都可以,看你喜好

npm install ioredis  //npm 安装
-------------------------------
yarn add ioredis     //yarn 安装

然后就是使用了 :
为了代码简洁,我是把配置文件放在了另一个文件里,你直接用也可以

redisConfing.js

let redisConfig = {}

redisConfig={
  prot :6379, // 端口号
  host:'127.0.0.1', // ip
  password:'', // 密码 同上文 我没有设置有的话你可以写 还有一些参数我没有去了解
}
module.exports={
  redisConfig
}

redis.js

// 引入 ioredis 包
const redis = require('ioredis')
// 引入配置文件 需要传入给实例对象
const { redisConfig } = require('../config/RedisConfig')

// 创建实例 连接NoSQL服务器
const client = new redis(redisConfig)
module.exports={
  client
}

到这里 就可以执行一些CRUD的操作了,(其实感觉就是一种数据库操作)

封装所需要用到的ioredis方法

然后我自己分装了几个需要用到的方法不解释了 上码

// 引入 redis 实例对象
const {client} = require('../database/Redis')
// Promise async/await 封装
//   ->向redis中定时存储数据
async function setRedis(key, value) {
  // 存储
  await client.set(key, value, (err, data) => {
    // 为key 设定一个时长 单位为S
    client.expire(key, 60)
    if (err) {
      console.log(err);
    }
    console.log('redis store Success!', data);
    return data //成功会返回ok
  })
}
// Promise async/await 封装
//  ->查询 rides 库中是否有该Key 用于判断Token是否过期
async function queryRedis(key) {
  const result = await client.exists(key)
  //  判断该值是否为空 如果为空返回null
  if (result === 0) {
    console.log('result:<','<'+result+'>','This key is null...');
    return null
  }
  console.log('Result:','<'+result+'>','With this value!...');
  return result
}
// Promise async/await 封装
//  ->获取 rides 库中该 Key 的 value
async function getRedis(key) {
  const result = await client.get(key)
  if(result === null){
    console.log('result:','<'+result+'>', 'This key cannot be find...')
    return null
  }
  console.log('Result:','<'+result+'>','Get key success!...');
  return result
}

// Promise async/await 封装
//  ->为 rides 库中的一个key 设定过期的时间 单位为秒(S)
async function timeSetRedis(key,time){
  // 设定时间
  const result = await client.expire(key,time)
  if(result === 0){
    console.log('Result','<'+ result+'>','Set defeated or key not find...');
    return null
  }
  // console.log(result);
  console.log('Result','<'+ result+'>','Set Success!');
  return result
}

module.exports={
  setRedis,
  getRedis,
  queryRedis,
  timeSetRedis
}

有写的不对的地方欢迎批评指正,我对redis和ioredis也是了解了一点点~
本文帮助和我一样对Node如何使用时感觉困惑的人!