最近公司的 ASR 实时推送以及登录认证模块都使用了 Redis ,因此在完成功能的同时,整理一下 Node.js 从零开始对 Redis 使用的文档。
1、本地安装 Redis
1.1、安装地址:
Redis 服务器软件 官网:
Redis 服务器软件 github (免费):
Redis 数据库桌面管理工具 (付费):
1.2、安装流程:
- 我是在 github 下载【】版本,下载包:【】
- 一键式安装,直到安装完毕
- 找到安装路径,在安装路径下打开 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 foobaredrequirepass 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}个频道。`);});复制代码