最近 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 の各オペレーションが網羅的に定義してあって「やっぱこーなるか・・・」と思いました。