/** * Created by GoLand. * User: link1st * Date: 2019-07-26 * Time: 09:18 */ package cache import ( "fmt" "gowebsocket/lib/redislib" ) const ( submitAgainPrefix = "acc:submit:again:" // 数据不重复提交 ) /********************* 查询数据是否处理过 ************************/ // 获取数据提交去除key func getSubmitAgainKey(from string, value string) (key string) { key = fmt.Sprintf("%s%s:%s", submitAgainPrefix, from, value) return } // 重复提交 // return true:重复提交 false:第一次提交 func submitAgain(from string, second int, value string) (isSubmitAgain bool) { // 默认重复提交 isSubmitAgain = true key := getSubmitAgainKey(from, value) redisClient := redislib.GetClient() number, err := redisClient.Do("setNx", key, "1").Int() if err != nil { fmt.Println("submitAgain", key, number, err) return } if number != 1 { return } // 第一次提交 isSubmitAgain = false redisClient.Do("Expire", key, second) return } // Seq 重复提交 func SeqDuplicates(seq string) (result bool) { result = submitAgain("seq", 12*60*60, seq) return }