node-redisは「2つの呼び出し方」だけでOK


node-redis触った

node.js触りたての頃弄ってたくらいで、正直、RDBSばっかり使ってた。で、改めてドキュメントを読んだり、色々なラッパーを書いては崩し、ソースを読み(とは言っても、大事な部分は全部index.jsに書いてある楽ちん仕様だ)という感じで付き合ってみたが、結局、2つの用法だけで良いらしい。

大体、DELコマンドとか、redisclient.del("key1","key2","key3",...,callback)っちゅー形では、ほとんど直値でしかアクセスできない。可変個にアクセスするなら、どう考えたって配列アクセスだろう。プログラムで生成した引数を渡すよね、普通。そして、内部のソースを見ると、常に配列に放り込んでパーザに渡しているのだ。「probably the fastest way」とかコメントにも書いてある。厳密に言えば、redisclient.del(["key1","key2","key3",...],callback)の形が一番速いようだが、まあそれはそれ。お好みで。

redis = require("redis")
rcli = redis.createClient()

rcli.on "error", (err)->
  console.log("Error " + err);

rcli.multi([
  ["mget", "multifoo", "multibar"],
  ["incr", "multifoo"],
  ["incr", "multibar"]
]).exec((err, replies) ->
  console.log "err: "+err?.toString()
  console.log "reply: "+replies?.toString()
)

rcli.send_command "del",["key1","key2","key3"],(err,reply)->
  console.log "err: "+err?.toString()
  console.log "reply: "+reply?.toString()

つまり、この2形式だけ知っておけば良い。後者はコマンドを直接メソッド名にして同じ形式でやった方が、タイプ量もちょっと少ないかな。

だいぶ気楽になりました。

コマンドは、なんか、目的別にまとめて覚えた方が良さそうね。KVStoreとして使うとき、MessagePassingに使うとき、排他制御に使うとき、などなど。そこはイディオムを覚えろってことね。

以上。今日は寝る。