點燈坊

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

如何在 Node 使用 Redis 的 INCRBYFLOAT ?

Sam Xiao's Avatar 2020-03-21

Redis 的 INCRBYFLOAT 可直接針對 KEY 增加指定 Float,亦可使用 Node Redis 的 incrbyfloat()

Version

macOS Catalina 10.15.3
WebStorm 2019.3.4
Redis 5.0.6
Node Redis 2.8.0

Command

$ get price
$ incrbyfloat price 0.5
  • 使用 INCRBYprice key 增加 0.5

float000

Node

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

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

let redisGet = promisify(myRedis.get).bind(myRedis)
let redisIncrbyfloat = promisify(myRedis.incrbyfloat).bind(myRedis)

redisGet('price').then(console.log)
redisIncrbyfloat('price', 0.5).then(console.log)

第 10 行

let redisIncrbyfloat = promisify(myRedis.incrbyfloat).bind(myRedis)

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

13 行

redisIncrbyfloat('price', 0.5).then(console.log)

使用 redisIncrbyfloat()price key 直接新增 0.5,回傳為新增後結果的 promise。

float001

Conclusion

  • Node Redis 所提供的 incrbyfloat() 為 callback based,可使用 promisify() 轉成 promise based

Reference

Redis, INCRBYFLOAT