golang分布式的幂等如何实现

幂等

多次操作和一次操作,最终的结果都是一致的。

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秒内)不论调用多少次,只有第一次会执行。

猜你喜欢

转载自blog.csdn.net/fwhezfwhez/article/details/108842950