Golang中的原子和并发安全Redis事务

时间:2019-03-11 13:13:27

标签: go concurrency redis transactions

我正在尝试在go程序中实现以下逻辑:

def action:
 1. GET the value of KEY from Redis
 2. SET the value of KEY to 0

我正在使用go-redis模块与我的Redis实例进行交互。

我对Redis交易很熟悉,但是我似乎找不到关于如何在Golang中以并发安全和原子的方式实现所需操作集的不错的文档或示例。

问题:即使我从不同的go例程访问Redis实例,如何实现定义的action并确保在步骤1和2之间不会发生其他Redis操作?

1 个答案:

答案 0 :(得分:1)

您可以使用单个Redis命令GETSET来完成此操作,该命令将是原子的:

GETSET KEY 0

更广泛地说,关于确保Redis中的原子性并没有特定于Go的内容。您只需使用熟悉的相同Redis交易工具(通过Go Redis客户端)即可。