LoginSignup
0
0

More than 5 years have passed since last update.

NodeでRedisのBLPOPを試す

Posted at

Redisのことを調べている途中、BLPOPの挙動のイメージがつかなかった為、実際にNodeで動かして動作を試してみた。

nodeRedis.js
const redis = require('redis')
const client = redis.createClient()
const clientBlocking = client.duplicate()

client.on('error', err => {
  console.log(`Error ${err}`)
})

let count = 0

const rpushQueue = () => {
  console.log('rpush called')
  client.rpush('dataQueue', `This is message${count}`)
  count += 1
  setTimeout(rpushQueue, 1000)
}

const blpopQueue = () => {
  console.log('blpop called')
  clientBlocking.blpop('dataQueue', 5, (err, data) => {
    console.log('brpop returned')
    console.log(data)
    setTimeout(blpopQueue, 1000)
  })
}

rpushQueue()
blpopQueue()
実行結果

rpush called
blpop called
rpush returned
blpop returned
[ 'dataQueue', 'This is message0' ]
rpush called
rpush returned
blpop called
blpop returned
[ 'dataQueue', 'This is message1' ]
rpush called
blpop called
rpush returned
blpop returned
[ 'dataQueue', 'This is message2' ]
rpush called
blpop called
blpop returned
[ 'dataQueue', 'This is message3' ]
rpush returned
rpush called
blpop called
rpush returned
blpop returned
[ 'dataQueue', 'This is message4' ]
rpush called
blpop called
rpush returned
blpop returned
[ 'dataQueue', 'This is message5' ]
rpush called
blpop called
rpush returned
blpop returned
[ 'dataQueue', 'This is message6' ]
Redisサーバーが受け取ったコマンドをモニタリング

127.0.0.1:6379> monitor
OK
1534090072.046673 [0 127.0.0.1:64628] "info"
1534090072.047025 [0 127.0.0.1:64629] "info"
1534090072.048497 [0 127.0.0.1:64628] "rpush" "dataQueue" "This is message0"
1534090072.049054 [0 127.0.0.1:64629] "blpop" "dataQueue" "5"
1534090073.050424 [0 127.0.0.1:64628] "rpush" "dataQueue" "This is message1"
1534090073.051476 [0 127.0.0.1:64629] "blpop" "dataQueue" "5"
1534090074.054616 [0 127.0.0.1:64628] "rpush" "dataQueue" "This is message2"
1534090074.055912 [0 127.0.0.1:64629] "blpop" "dataQueue" "5"
1534090075.056934 [0 127.0.0.1:64628] "rpush" "dataQueue" "This is message3"
1534090075.057328 [0 127.0.0.1:64629] "blpop" "dataQueue" "5"
1534090076.058631 [0 127.0.0.1:64628] "rpush" "dataQueue" "This is message4"
1534090076.058961 [0 127.0.0.1:64629] "blpop" "dataQueue" "5"
1534090077.060440 [0 127.0.0.1:64628] "rpush" "dataQueue" "This is message5"
1534090077.060917 [0 127.0.0.1:64629] "blpop" "dataQueue" "5"
1534090078.065384 [0 127.0.0.1:64628] "rpush" "dataQueue" "This is message6"
1534090078.065597 [0 127.0.0.1:64629] "blpop" "dataQueue" "5"
1534090079.071470 [0 127.0.0.1:64628] "rpush" "dataQueue" "This is message7"
1534090079.071899 [0 127.0.0.1:64629] "blpop" "dataQueue" "5"
1534090080.072054 [0 127.0.0.1:64628] "rpush" "dataQueue" "This is message8"
1534090080.072165 [0 127.0.0.1:64629] "blpop" "dataQueue" "5"
1534090081.077364 [0 127.0.0.1:64628] "rpush" "dataQueue" "This is message9"
1534090081.077900 [0 127.0.0.1:64629] "blpop" "dataQueue" "5"
1534090082.078408 [0 127.0.0.1:64628] "rpush" "dataQueue" "This is message10"
1534090082.079060 [0 127.0.0.1:64629] "blpop" "dataQueue" "5"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0