我正在使用golang和go-redis包 我想在redis中存储一个键值对(例如一次令牌)。读取此令牌时,我会生成永久令牌。但是一旦我读完了这个值,就应该删除一次性令牌。这是为了避免快速重放攻击。实现这一目标的最佳方式是什么。我一直在考虑互斥。
答案 0 :(得分:2)
这是MULTI-EXEC
功能的完美用例:
MULTI
GET key
DELETE key
EXEC
或者去:
pipe := client.TxPipeline()
get := pipe.Get("key")
pipe.Del("key")
_, err := pipe.Exec()
fmt.Println(incr.Val(), err)
这将确保两个命令在事务中执行,因此密钥将被检索和删除,或者根本不被检索。