Node.js で Redis を使う場合、コネクションプールは必要ない
TL;DR
Node.js も Redis もシングルスレッドなので、 Node 1プロセスにつき接続ひとつでよい。
トップレベルで createClient
をして、その先で使えばよい。
本文
Redis はよく使われるインメモリデータストアです。
ふつうの DB (Postgres とか)だとコネクションプールを普通に使うので、 Redis にもあるのかなーと思って node-redis のドキュメントを見に行くとコネクションプールに関する記載がない。
どういうこっちゃと思って GitHub の issue をあさりに行くと、その理由がありました。
connecting pool · Issue #1354 · NodeRedis/node-redis
Since Node and Redis are both (practically) single-threaded a single connection per Node process is the general pattern. Just use
createClient
at the top level of your script and move on.
(筆者訳)
Node も Redis も両方(実質)シングルスレッドだから、 Node のプロセスひとつにつき1コネクションとするのが一般的なパターン。たんにトップレベルで createClient
を使って、その先に進めばよい。
なるほどなぁ。
例外もあるらしいので、気をつけて実装しましょう。
Exceptions would be blocking commands (BLPOP, XREAD, etc.) and SUBSCRIBE - those need their own connection.
(筆者訳)
ブロッキングコマンド (BLPOP とか XREAD とか……)と SUBSCRIBE は例外で、これらには独自のコネクションが必要。
Author And Source
この問題について(Node.js で Redis を使う場合、コネクションプールは必要ない), 我々は、より多くの情報をここで見つけました https://qiita.com/rikegami/items/8dfe8e8139beec765933著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .