func CacheTimeGenerator() time.Duration {
// 先设置随机数 - 这里比较重要
rand.Seed(time.Now().Unix())
// 再设置缓存时间
// 10 + [0~20) 分钟的随机时间
return time.Duration((10 + rand.Int63n(20)) * int64(time.Minute))
}
写项目过程,设置缓存过期时间时候想添加随机数时间
过期,用到一个小技巧,随手记录一下
代码如下:
func CacheTimeGenerator() time.Duration {
// 先设置随机数 - 这里比较重要
rand.Seed(time.Now().Unix())
// 再设置缓存时间
// 10 + [0~20) 分钟的随机时间
return time.Duration((10 + rand.Int63n(20)) * int64(time.Minute))
}
实际上就是先将分钟转换成int64
类型,然后再与随机生成的int64
数相乘,平时我们常用的
cacheTime := 10 * time.Minute
是将time.Duration
类型的变量乘10倍,但是如果要使用随机数,就需要先转换成int64
类型,实际上time.Duration
就是int64
,但是time
还是封装了一下,所以要先转换。