macでredisの導入
redisとその用途
redisはmemcachedのようなKey-Valueストアだ。
memcachedは使ったことあるが、ぶっちゃけ使ったことはない。
DBのKVSランキング一位なら便利なんだろう…。
ゲームを実装するにあたって以下の実装をするために導入する。
・APIの多重発行などがあった際に信用なるものかの判断(セッションのような)
・簡易ランキング
redisのインストール
macの場合はインストールをbrewで行う。
$ brew install redis
バージョン確認
インストール後のバージョン確認は以下で実行
$ redis-server -v
Redis server v=5.0.3 sha=00000000:0 malloc=libc bits=64 build=457be8ba4fa3e51f
起動
サービスとして起動させる
$ brew services start redis
プロセスを確認
$ ps ax | grep redis
51547 ?? S 0:00.02 /usr/local/opt/redis/bin/redis-server 127.0.0.1:6379
51551 s000 S+ 0:00.00 grep redis
6379ポートで起動したようだ。
対話式で動作確認
$ redis-cli
127.0.0.1:6379> get "hoge"
(nil)
127.0.0.1:6379> set "hoge" "fuga"
OK
127.0.0.1:6379> get "hoge"
"fuga"
127.0.0.1:6379> del "hoge"
(integer) 1
127.0.0.1:6379> get "hoge"
(nil)
うーん、これだよこれ。この楽さ。
1cpuで動いてコマンドも一つずつしか動かせないから色々考えずに凄い使いやすそう。
次はGo対応だ。
Go対応
star 9517(2019/3/7現在)
star 5558(2019/3/7現在)
star 5169(2019/3/7現在)
スター数だけでいうならBoltだろう。
検証されている方がいるがこの中でも最速はBoltらしい。
そして次点はredigo。
こちらはこちらでやりたいことをやれるようだ。
しかし選んだのは
go-redis/redis にしといた。
・KVS使うけどパフォーマンスより利便性
・使うならヒューマンエラーが無いほうがいい
・やる気を感じる
この三点から見て”go-redis/redis”にしといた。
サンプルソースがとても直感的だ。
他2つのサンプルソースは以下の点が選ばれなかった理由だ。
・boltは何書いているかパッと見良くわからない
・redigoはDo(“SET”、Do(“GET”で文字を入れ込むのでヒューマンエラーが起きやすそう
ベンチマーク比較とかしてやる気も感じられるし、個人用ゲームであれば
どれも問題ないだろうけど直感的に書けることが望ましい。
セッション周りの実装が終わったらクライアント実装に戻りたい…。
だが次はDB周りの実装だ…。
データは保存されなければサーバの意味はないのだから…。