go - 如何使用 go-redis/redis 包在 Go 中创建 Redis 事务?

标签 go transactions redis

我想使用 MULTI 执行多个带有事务的 redis 命令和 EXEC ,所以我可以DISCARD如果发生不好的事情。

我正在寻找如何使用 redis 事务的示例 go-redis/redis打包,一无所获。

我还查看了文档 here我没有得到与如何进行 redis 交易相关的任何信息 like this for example使用那个包。或者也许我从文档中遗漏了一些东西,因为是的,你知道 godoc 只解释包中的每个函数,主要使用一个衬里。

即使我找到了一些使用其他 Go Redis 库执行 redis 事务的示例,我也不会修改我的程序以使用另一个库,因为使用另一个库移植整个应用程序的工作量会大得多。

任何人都可以使用 go-redis/redis 包帮助我做到这一点吗?

最佳答案

你得到一个 Tx使用 Client.Watch 时交易的值(value)

err := client.Watch(func(tx *redis.Tx) error {
    n, err := tx.Get(key).Int64()
    if err != nil && err != redis.Nil {
        return err
    }

    _, err = tx.Pipelined(func(pipe *redis.Pipeline) error {
        pipe.Set(key, strconv.FormatInt(n+1, 10), 0)
        return nil
    })
    return err
}, key)

关于go - 如何使用 go-redis/redis 包在 Go 中创建 Redis 事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40999446/

相关文章:

python - 在 SQLAlchemy 数据库 session 之外访问表对象

c# - 您将在 .NET Core Web/api 应用程序中的何处实现缓存?

loops - 在循环中使用 defer 释放资源的正确方法?

去 atomic.AddFloat32()

python - 对内存中的 "transaction"使用 pickle 吗?

Python-Redis : Best practice serializing objects for storage in Redis

redis - 如何在 Docker 中运行 Redis 服务器和另一个应用程序?

html - Go 解析 HTML 表格

json - Golang 解码 json 映射和数组

MySQL 多个事务递增同一行