Go Revel で Redis Sessionの設定
前回は、Cacheで、今回は、Sessionです。
こっちが本丸です。
といっても、事の重要性に気づいたのは、最近です。
まず、セッションをRevelとnodeとの間で共有したいって話がスタートです。
まぁ、Cacheをそのまま共有が一番手っ取り早いので、そちらでもOKだと(個人的には)思います。
ですが、サーバが増えてRevel間のセッション共有もしないと!と考えると、どうも、やり方がわからない。
RailsみたいにDBにストアしてくれるモジュールがあれば、簡単なのですが、それも良くわからない。
んで、Redisあるから、どうせわからんなら、Redisで調べてみるかと。
やはりというか、まぁそうでしょって感じで、英語のHPしかヒットしない。
日本人頑張れ!!(つーか自分もそうなんですが)と、検索したおしても見当たらない。
なので、Google翻訳様と一緒に、いろいろやってみました。
まず、そのHPをば。
http://stackoverflow.com/questions/24156274/how-to-use-redis-based-session-on-revel
質問者は、
https://gist.github.com/xthexder/9026678
のソースを
app/libs/session/session.go
にいれて、app/init.goを
import ( "benchwork/app/libs/session" "github.com/cbonello/revel-csrf" "github.com/revel/revel" ) func init() { // Filters is the default set of global filters. revel.Filters = []revel.Filter{ ・ // revel.SessionFilter, // Restore and write the session cookie. app.SessionFilter,
として、やったら、エラーになったとのこと。
んで、下の回答では、Redisが定義されていない、redisにしろとかある。
こちらでもやってみる
ERROR 2015/05/10 16:24:11 build.go:101: # app/libs/session app/libs/session/session.go:75: undefined: redis.Get app/libs/session/session.go:126: undefined: redis.Get app/libs/session/session.go:129: not enough arguments in call to redis.String app/libs/session/session.go:172: undefined: redis.Get app/libs/session/session.go:175: not enough arguments in call to redis.Int
駄目じゃん!!
そもそも、グレってもGetとか関数がpool以外ではないようだけど。
んで、最後の回答者(評価ゼロってどういうこと?!)
http://www.diffchecker.com/n0k0fy8w
の改良プログラムを使ってやってみると・・・・
見事、Redis上にSession出来たみたいっす。
これは、ありがたい。
ちなみに、hostとportは、app.conf上にあるので、それを見るようにすれば、ばっちりです。