Node.js 系列:Redis 的使用

5,825 阅读2分钟
最近公司的 ASR 实时推送以及登录认证模块都使用了 Redis ,因此在完成功能的同时,整理一下 Node.js 从零开始对 Redis 使用的文档。

1、本地安装 Redis

1.1、安装地址:


1.2、安装流程:

  • 我是在 github 下载【win-3.2.100】版本,下载包:【Redis-x64-3.2.100.msi
  • 一键式安装,直到安装完毕
  • 找到安装路径,在安装路径下打开 redis-cli.exe 就可以使用
  • 并且输入 ping 出现 PONG ,说明连接成功


  • 设置密码:可以通过 config get requirepass 查看密码,可以通过 config set requirepass 123456 设置密码。但是在这种设置下,Redis 一旦重启密码就会清空,当然如果是服务器上的 Redis,可不能随随便便重启。


  • 在本地 Redis 上可以设置永久密码,具体流程如下:

- 打开 redis.windows.conf 和 redis.windows-service.conf 的两个配置文件。
- 在配置文件中找到 requirepass 这个参数。
- 在它的这个 # requirepass foobared 语句下边
- 写下你的密码:requirepass 123456
- 例:
# requirepass foobared
requirepass 123456

- 备注:只修改一个文件是不行的
- 重启 Redis 生效
  • 重启 Redis:


  • 一旦设置密码后,打开 redis-cli.exe 可就没权限操作了


  • 这时我们可以通过如下方式登录:

- 打开 cmd
- cd 到 Redis 的安装路径
- 输入指令:redis-cli.exe -h 127.0.0.1 -p 6000 -a xxx
-h: 是指地址 127.0.0.1 指的是本地,如果是远程的就写远程的地址
-p: 这边是端口号,具体看个人的配置 redis.windows.conf 里面的,默认是 6379
-a: 密码,和 -p 一样,没设置就不用写 -a了


2、Node.js 连接 Redis

2.1、NPM 包

  • node_redis
  • GitHub:https://github.com/NodeRedis/node_redis

2.2、连接代码

  • Install

npm install redis

  • 基本

const redis = require("redis");
// 端口、IP、密码
let client = redis.createClient(redisPort, redisAddress, { auth_pass: redisPassword });
// set 插入
client.set('stringKey', 'stringValue'); 
client.set('stringKey', 'stringValue', 'EX', 10); // 可设置过期时间(单位:秒)
// get 获取
client.get('stringKey', (err, value) => {
    if (err) {
        console.log(err);
    }
    console.log(value);
});
// del 删除
client.del('stringKey');

  • 发布订阅

const redis = require('redis');
// 端口、IP、密码
let client = redis.createClient(redisPort, redisAddress, { auth_pass: redisPassword });
// 监听客户端连接 Redis 成功,成功后执行回调
client.on("ready", () => {
    //订阅主题
    client.subscribe(redisTopic);
});
// 监听客户端连接 Redis 异常,异常后执行回调
client.on("error", function (error) {
    console.log(error);
});
// 监听订阅主题成功,成功后执行回调
client.on("subscribe", (channel, count) => {
    console.log(`订阅频道:${channel},当前总共订阅${count}个频道。`);
});
// 监听 Redis 发布的消息,收到消息后执行回调。
client.on("message", (channel, message) => {
    console.log(`当前频道:${channel},收到消息为:${message}`);
});            
// 监听取消订阅主题,取消后执行回调
client.on("unsubscribe", (channel, count) => {
    console.log(`取消订阅频道:${channel},当前总共订阅${count}个频道。`);
});

3、other(目前暂未想好需要补充什么,敬请期待。。。)