最近公司的 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}個頻道。`);
});複製程式碼