1234567891011121314151617181920212223242526272829 |
- 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
- }
|