gitee.com/h79/goutils@v1.22.10/dao/redis/pool/server.go (about) 1 package pool 2 3 import ( 4 "context" 5 "sync" 6 7 "github.com/go-redis/redis/v8" 8 ) 9 10 //Info 获取所有就节点信息 11 func (c *Client) Info(ctx context.Context, section ...string) (res map[string]string, err error) { 12 client, cErr := getClusterClient(c) 13 14 if cErr != nil { 15 return nil, cErr 16 } 17 18 res = make(map[string]string, 0) 19 locker := sync.RWMutex{} 20 err = client.ForEachShard(ctx, func(ctx context.Context, c *redis.Client) error { 21 defer locker.Unlock() 22 23 addr := c.Options().Addr 24 r, e := c.Info(ctx, section...).Result() 25 locker.Lock() 26 if e == nil { 27 res[addr] = r 28 } else { 29 res[addr] = e.Error() 30 } 31 32 return e 33 }) 34 35 return res, err 36 } 37 38 //NodeInfo 获取单个节点的info 39 func (c *Client) NodeInfo(ctx context.Context, addr string, section ...string) (res string, err error) { 40 client, cErr := getClusterClient(c) 41 42 if cErr != nil { 43 return "", cErr 44 } 45 46 err = client.ForEachShard(ctx, func(ctx context.Context, c *redis.Client) (err error) { 47 if addr == c.Options().Addr { 48 res, err = c.Info(ctx, section...).Result() 49 } 50 return 51 }) 52 53 return res, err 54 }