go-redis でクラウド上の Redis Cluster とローカルに立てた Redis を同じコードで動かす

最近 go-redis を使っているのだが、"クラウド上は Redis Cluster で、ローカルは開発用の Single Redis をサクッと Docker で立てる" みたいなことをしたいと思った。 しかし、go-redis では Redis Cluter と Single Redis が異なるクライアントとして定義されていた。

https://pkg.go.dev/github.com/go-redis/redis/v8#Client

https://pkg.go.dev/github.com/go-redis/redis/v8#ClusterClient

この2つを扱えるように必要な操作を定義したインターフェースを自分を定義するのも面倒なので、いい方法ないかなーと思って探したら "UniversalClient" というものがあった。

https://pkg.go.dev/github.com/go-redis/redis/v8#UniversalClient

これを利用すれば同じコードでクラウドでもローカルでも動きそう。 よかった、よかった。

UniversalClient を利用する際は以下も確認しておいたほうがよい。 www.pospome.work

UniversalClient は "Cmdable" というインターフェースを持っているのだが、 Redis の各オペレーションが網羅的に定義してあって「やっぱこーなるか・・・」と思いました。

https://pkg.go.dev/github.com/go-redis/redis/v8#Cmdable