使用golang在redis中存储单个时间使用记录的最佳方法

时间:2017-06-20 14:38:27

标签: go redis

我正在使用golang和go-redis包 我想在redis中存储一个键值对(例如一次令牌)。读取此令牌时,我会生成永久令牌。但是一旦我读完了这个值,就应该删除一次性令牌。这是为了避免快速重放攻击。实现这一目标的最佳方式是什么。我一直在考虑互斥。

1 个答案:

答案 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)

这将确保两个命令在事务中执行,因此密钥将被检索和删除,或者根本不被检索。