redis変数はやっぱりグローバル変数にする必要ない気がします。
nnao45 opened this issue · comments
nnao45 commented
Go勉強会でお話しした内容なのですが、
var redisPool *redis.Pool
qicoo-api内でこのredisPool変数をグローバル変数で定義する必要性について考えてみましたが、
恐らくグローバルで定義する必要はないと思います。
[理由]
redigoパッケージにおける*redis.Poolは見ての通り、redis.Pool型のポインタです。
事の焦点は、「変数redisPoolをTCPコネクションがリスタートする度に作り直すかどうか」という所で、多分その答えは「作り直さない」でしょう。
なぜならですね、以下のqicoo-api内ではmain関数の中の以下の関数でしかredisPoolに代入してません。
func initRedisPool()
仮に例えばこれが構造体でAPIリクエストのたびに呼ばれてインスタンスを再生成しているのであれば、グローバル変数にしておく価値はあるかもしれませんが実際はmain関数はmuxルータが起動したらmuxのルーティングで無限ループするだけです。
[対応策]
1.普通にmain関数内で変数を定義する
2.構造体としてredisPoolを定義して、モジュールとして関連する関数を定義する。
redisPoolを使いまわすのであれば2がいいかもしれません。
nnao45 commented
これはリファクタリングした後にまた議題に出しますね。