summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/go-redis/redis/internal/internal.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/go-redis/redis/internal/internal.go')
-rw-r--r--vendor/github.com/go-redis/redis/internal/internal.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/vendor/github.com/go-redis/redis/internal/internal.go b/vendor/github.com/go-redis/redis/internal/internal.go
new file mode 100644
index 000000000..fb4efa5f0
--- /dev/null
+++ b/vendor/github.com/go-redis/redis/internal/internal.go
@@ -0,0 +1,23 @@
+package internal
+
+import (
+ "math/rand"
+ "time"
+)
+
+const retryBackoff = 8 * time.Millisecond
+
+// Retry backoff with jitter sleep to prevent overloaded conditions during intervals
+// https://www.awsarchitectureblog.com/2015/03/backoff.html
+func RetryBackoff(retry int, maxRetryBackoff time.Duration) time.Duration {
+ if retry < 0 {
+ retry = 0
+ }
+
+ backoff := retryBackoff << uint(retry)
+ if backoff > maxRetryBackoff {
+ backoff = maxRetryBackoff
+ }
+
+ return time.Duration(rand.Int63n(int64(backoff)))
+}