JAVAでredisを使う際、以下のライブラリを使用していた。
https://github.com/mp911de/lettuce
このライブラリはとても素晴らしいのだが、
Non Blocking IO機能を、マルチスレッド環境で使おうとすると、
どうもコントロールが難しい。
というのもの、このライブラリは内部的にnettyを使っており、
Non Blockingを使う際、nettyのHashedWheelTimerってやつが、
シングルスレッドでtickを刻んでいるため、複数接続を作ろうとすると怒られる。(たぶん作れない)
そもそもredisはシングルスレッドなので、複数接続作ることが間違っているのかもしれないが、
常時接続を1本をマルチスレッド環境で使うのもなんとなく心細い。。
エラーハンドリングでの再接続なども実装しようとすると、
せめてcore数くらい接続を用意しておきたい心持である。。
結局Non Blockingはやめて、Blockingを選択したことで、
複数接続を扱えるようになったが、正直結構悩むところである。
コメントがあればどうぞ