如何從 Node.js 使用 Redis
在 Node.js 應用程式中,使用 Redis 伺服器最受歡迎的庫之一是 node-redis
,它可以在 https://github.com/NodeRedis/node-redis 找到。
在您的專案中安裝該庫:
1 | npm install redis |
提示:如果專案是全新的並且還沒有
package.json
檔案,請先執行npm init -y
。
連接到 Redis 實例
安裝完庫之後,使用以下程式碼在您的專案中引入它:
1 | const redis = require('redis') |
或者
1 | import redis from 'redis' |
獲取 redis
物件之後,使用以下程式碼創建一個新的客戶端:
1 | const client = redis.createClient({ |
然後使用以下程式碼連接到 Redis(在 async 函數中執行):
1 | await client.connect() |
當您獲得了客戶端之後,就可以執行 Redis 可以做的所有操作。
要關閉連接,請調用:
1 | client.quit() |
存儲和檢索鍵值
使用 set()
將鍵值對存儲到 Redis 中:
1 | client.set("<key>", "<value>") |
例如:
1 | client.set("name", "Flavio") |
如果在乾淨的 Redis 伺服器上運行 redis-cli
中的 KEYS *
命令,您將看到這兩個鍵:
使用 get()
可以獲取存儲在鍵中的值:
1 | const value = await client.get("name") |
使用以下程式碼刪除鍵值對:
1 | client.del("names") |
工作與列表
在 Redis 中,我們可以使用以下 Redis 模塊中的命令來處理列表:
LPUSH
RPUSH
LTRIM
LRANGE
這些命令直接映射為 client
物件的方法。
使用以下程式碼創建一個列表:
1 | client.lPush('names', 'Flavio') |
將新項目添加到列表的底部:
1 | client.rPush('names', 'Roger') |
或者添加到列表的頂部:
1 | client.lPush('names', 'Syd') |
使用以下程式碼列出列表中的所有項目:
1 | const result = await client.lRange('names', 0, -1) |
使用以下程式碼從列表中刪除項目:
1 | client.rPop('names') |
使用以下程式碼刪除列表:
1 | client.del('names') |
工作與集合
在 Redis 中,我們使用以下 Redis 模塊中的命令來處理集合:
SADD
SPOP
SMEMBERS
這些命令直接映射為 client
物件的方法。
使用以下程式碼創建一個集合:
1 | client.sAdd('names', 'Flavio') |
添加更多項目到該集合:
1 | client.sAdd('names', 'Roger') |
您可以一次添加多個項目:
1 | client.sAdd('names', 'Roger', 'Syd') |
也可以通過傳遞一個陣列:
1 | const names = ['Flavio', 'Roger', 'Syd'] |
使用以下程式碼列出集合中的所有項目:
1 | const names = await client.sMembers('names') |
使用以下程式碼從集合中刪除一個隨機項目:
1 | client.sPop('names') |
可以添加第二個參數以刪除多個隨機項目:
1 | client.sPop('names', 3) |
使用以下程式碼刪除集合:
1 | client.del('names') |
工作與哈希表
在 Redis 中,我們使用以下命令來處理哈希表:
HMSET
HGETALL
HSET
HINCRBY
這些命令直接映射為 client
物件的方法。
使用以下程式碼創建一個哈希表:
1 | client.hSet('person:1', 'name', 'Flavio', 'age', 37) |
要獲取用戶的所有屬性,請使用 HGETALL:
1 | const items = client.hGetAll('person:1') |
您可以使用 HSET 更新哈希表的屬性:
1 | client.hSet('person:1', 'age', 38) |
您可以使用 HINCRBY 遞增存儲在哈希表中的值:
1 | client.hIncrBy('person:1', 'age', 1) |
使用以下程式碼刪除哈希表:
1 | client.del('person:1') |
訂閱
訂閱是 Redis 的一個令人驚奇的功能,在 Node.js 中可以實現一些非常奇特的事情。
一個發布者在一個頻道上發送一個消息,多個訂閱者接收它。
使用以下程式碼訂閱一個頻道:
1 | await subscriber.subscribe('dogs', (message) => { |
使用 client.publish('<channel>', '<message>')
發佈一個消息:
1 | client.publish('dogs', 'Roger') |
請注意,您不能在同一個 client
實例上發佈和訂閱。
在同一個應用程式中這樣做,請創建 2 個客戶端:
1 | const subscriber = redis.createClient({ ... }) |
tags: [“Redis”, “Node.js”, “database”, “tutorial”]