概要
v9 からインストール時のパスが変わっているので go get -u などしてもアップグレードされません
直接 go.mod ファイルなどを編集することでアップグレードできます
環境
- macOS 15.5
- golang 1.24.5
- go-redis 9.11
go-redis v9 のインストール
-
go get github.com/redis/go-redis/v9
go-redis v6 のアンインストール
- vim go.mod
require (
github.com/beego/beego/v2 v2.3.8
github.com/stretchr/testify v1.10.0
golang.org/x/crypto v0.40.0
)
もともとあった github.com/go-redis/redis v6.15.9+incompatible の行を削除します
コード内の import 文の修正
"github.com/go-redis/redis"
の箇所を
"github.com/redis/go-redis/v9"
に書き換えます
コードの修正
以下主な修正点を紹介します
基本的には各メソッドで何かしらのコンテキストを受け取る形式になっているのでそこを修正します
- context の import
import (
"context"
"github.com/redis/go-redis/v9"
)
- インタフェースの修正
type RedisClient interface {
LRange(ctx context.Context, key string, start, stop int64) *redis.StringSliceCmd
LPush(ctx context.Context, key string, values ...interface{}) *redis.IntCmd
Del(ctx context.Context, keys ...string) *redis.IntCmd
Get(ctx context.Context, key string) *redis.StringCmd
Set(ctx context.Context, key string, value interface{}, expiration time.Duration) *redis.StatusCmd
Close() error
}
- 各メソッドの修正
ctx := mc.Ctx.Request.Context()
ret, err := cli.Del(ctx, key).Result()
- テスト用のモックの修正
func (m *MockRedisClient) Del(ctx context.Context, keys ...string) *redis.IntCmd {
for _, key := range keys {
delete(m.data, key)
}
return redis.NewIntResult(1, nil)
}
動作確認
あとはテストなどを実行すれば OK です
-
go fmt ./...
-
go test ./...
-
go build
最後に
golang の場合非互換のバージョンアップがある場合は新規にパスを切るケースがほとんどなどでそれを知らずに放置しておくと最新バージョンからかなり遅れることになってしまいます
パスを新しくしたらあとは go get -u && go mod tidy でバージョンアップすることができます
0 件のコメント:
コメントを投稿