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