最近公司的 ASR 实时推送以及登录认证模块都使用了 Redis ,因此在完成功能的同时,整理一下 Node.js 从零开始对 Redis 使用的文档。
1、本地安装 Redis
1.1、安装地址:
Redis 服务器软件 官网:redis.io/download
Redis 服务器软件 github (免费):github.com/MSOpenTech/…
Redis 数据库桌面管理工具 (付费):redisdesktop.com/download
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}个频道。`);
});复制代码