點燈坊

失くすものさえない今が強くなるチャンスよ

如何在 Node 使用 Redis 的 HINCRBY ?

Sam Xiao's Avatar 2020-03-21

Redis 的 HINCRBY 可直接針對 Hash 增加指定值,亦可使用 Node Redis 的 hincrby()

Version

macOS Catalina 10.15.3
WebStorm 2019.3.4
Redis 5.0.6
Node Redis 2.8.0

Command

$ hget book price
$ hincrby book price 10
  • 使用 HINCRBYbook key 的 price field 增加 10

hincrby000

Node

import { createClient } from 'redis'
import { promisify } from 'util'

let myRedis = createClient({
  host: 'localhost',
  port: 6379
})

let redisHget = promisify(myRedis.hget).bind(myRedis)
let redisHincrby = promisify(myRedis.hincrby).bind(myRedis)

redisHget('book', 'price').then(console.log)
redisHincrby('book', 'price', 10).then(console.log)

10 行

let redisHincrby = promisify(myRedis.hincrby).bind(myRedis)

使用 promisify()hincrby() 從 callback 轉成回傳 promise。

13 行

redisHincrby('book', 'price', 10).then(console.log)

使用 redisIncrby()book key 的 price field 直接新增 10,回傳為新增後結果的 promise。

hincrby001

Conclusion

  • Node Redis 所提供的 hincrby() 為 callback based,可使用 promisify() 轉成 promise based
  • hincrby() 不只是對 key 的 field 增加 1 而已,而是可自行指定增加值

Reference

Redis, HINCRBY