package internal import ( "time" "github.com/go-redis/redis/v8/internal/rand" ) func RetryBackoff(retry int, minBackoff, maxBackoff time.Duration) time.Duration { if retry < 0 { panic("not reached") } if minBackoff == 0 { return 0 } d := minBackoff << uint(retry) if d < minBackoff { return maxBackoff } d = minBackoff + time.Duration(rand.Int63n(int64(d))) if d > maxBackoff || d < minBackoff { d = maxBackoff } return d }