我正在尝试在我的 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
并确保在步骤 1 和 2 之间不会发生其他 Redis 操作,即使我从不同的位置访问我的 Redis 实例也是如此去例行公事?
最佳答案
您可以使用单个 Redis 命令 GETSET
来完成此操作,这将是原子的:
GETSET KEY 0
更广泛地说,在确保 Redis 中的原子性方面没有任何特定于 Go 的内容。您只需使用您熟悉的相同 Redis 事务设施(通过 Go Redis 客户端)。
关于go - Golang 中的原子和并发安全 Redis 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55102652/