幂等
多次操作和一次操作,最终的结果都是一致的。
Go实现
go在分布式的环境下,如何实现某个操作的幂等
func Once(conn redis.Conn, key string, seconds int) bool {
if seconds == -2 {
seconds = int(TomorrowZero().Sub(time.Now()).Seconds())
}
rs, e := redis.String(conn.Do("set", key, "done", "ex", seconds, "nx"))
if e == redis.ErrNil {
return false
}
if rs == "OK" {
return true
}
return false
}
该方法(在seconds秒内)不论调用多少次,只有第一次会执行。