Redis 的 HMSET
與 HMGET
可同時設定多筆 Field 在單一 Key 內,亦可使用 Node Redis 的 hmset()
與 hmget()
。
Version
macOS Catalina 10.15.3
WebStorm 2019.3.4
Redis 5.0.6
Node Redis 2.8.0
Command
$ hmset book title 'FP in JavaScript' price 100
$ hmget book title price
- 使用
HMSET
一次設定book
key 下的title
與price
兩個 field - 使用
HMGET
一次讀取book
key 下的title
與price
兩個 field
Node
import { createClient } from 'redis'
import { promisify } from 'util'
let myRedis = createClient({
host: 'localhost',
port: 6379
})
let redisHmset = promisify(myRedis.hmset).bind(myRedis)
let redisHmget = promisify(myRedis.hmget).bind(myRedis)
redisHmset('book', 'title', 'FP in JavaScript', 'price', 100).then(console.log)
redisHmget('book', 'title', 'price').then(console.log)
第 9 行
let redisHmset = promisify(myRedis.hmset).bind(myRedis)
let redisHmget = promisify(myRedis.hmget).bind(myRedis)
使用 promisify()
將 hmset()
與 hmget()
從 callback 轉成回傳 promise。
12 行
redisHmset('book', 'title', 'FP in JavaScript', 'price', 100).then(console.log)
使用 redisHmSet()
寫入 book
key 的 title
與 price
兩個 field,若成功將回傳 OK
promise。
13 行
redisHmget('book', 'title', 'price').then(console.log)
使用 redisMget()
讀出 book
key 的 title
與 price
兩個 field,回傳為 array promise。
Conclusion
- Node Redis 所提供的
hmset()
與hmget()
為 callback based,可使用promisify()
轉成 promise based - 由於
hmget()
可一次取出多個 key,因此回傳為 array promise