【问题标题】:Atomic and Concurrent Safe Redis Transactions in GolangGolang 中的原子和并发安全 Redis 事务
【发布时间】:2019-03-11 13:13:27
【问题描述】:

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

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

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

我熟悉 Redis 事务,但我似乎找不到一个像样的文档或示例来说明如何在 Golang 中以并发安全和原子的方式实现所需的一组操作。

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

【问题讨论】:

标签: go concurrency redis transactions


【解决方案1】:

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

GETSET KEY 0

更广泛地说,在 Redis 中确保原子性并没有什么特定于 Go 的。您只需使用您熟悉的相同 Redis 事务工具(通过 Go Redis 客户端)。

【讨论】:

  • 谢谢,但如果我需要实现一组不同的没有等效原子命令的操作怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-20
相关资源
最近更新 更多