问题标签 [go-redis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2021 浏览

go - 如何从客户端运行非事务管道。 go-redis 中的监视功能

我有一个类似于以下的场景:

从阅读库代码看来, tx.TxPipeline 和 tx.Pipeline 在这种情况下都返回了一个 multi/exec 实现,这意味着如果我将它用于读取数据(阶段 1),我将在我用来更新数据的第二个管道。
任何解决方案都将得到应用。

0 投票
1 回答
60 浏览

docker - Webserver 无法通过 docker-compose 连接到 Redis

我正在尝试通过同一网络上的网络服务器连接到 docker 网络上的 redis 实例。我的代码正在运行,我正在使用我的 docker-compose.yml:

env.list 文件的相关部分:

我的应用程序中连接到 redis 的代码是:

我用于填充 conf 的代码是:

在 redis.conf 文件中,没有指定绑定 IP,并且 requirepass 设置为与 redis_pass 相同的值。此外,我在服务器上看到的错误是:

当我检查 redis 映像时,我可以确认它具有以下 IP 地址:

当我尝试通过 redis-cli 连接本地计算机时,我可以毫无问题地访问服务器。我已经四处搜索以尝试找到类似的问题,但它们似乎都与试图通过 localhost 访问 redis 的人有关,我不想这样做。任何帮助是极大的赞赏。

0 投票
1 回答
128 浏览

go - 尝试从 redis 中的列表 LPOP 时错误的类型操作

我正在使用 golang 玩 redis,但是当我尝试LPOP从列表中获取一个元素时,我不断收到错误消息。它仅在我在列表中插入第一个元素时才有效,但是当我尝试添加第二个元素时,我不断收到以下错误: WRONGTYPE Operation against a key holding the wrong kind of value

我已阅读文档,但我仍然收到此错误,请任何人指出我做错了什么,因为我仍在调试。谢谢

0 投票
2 回答
1126 浏览

go - 使用 miniredis 模拟 redis 服务器失败

Golang 新手在这里 :)
我在 go-redis 上有一个 redis 客户端包装器,我想测试它是否正常工作。我曾尝试使用 miniredis 来模拟我将要连接的 redis 服务器,但我不断收到错误消息。

当我将所有东西都放在同一个函数中时,它就可以工作了——我可以针对 miniredis 服务运行 go-redis。但是,当我尝试使用我的客户端时,它失败了。
我试过查看 go-redis 和 miniredis 的文档,但找不到任何答案。我也尝试过将 miniredis 服务器定义为全局变量,但这也无济于事。

客户端实现:

测试实现:

我究竟做错了什么?

0 投票
2 回答
7633 浏览

go - 无法编组,(实现 encoding.BinaryMarshaler)。带有多个对象的 go-redis Sdd

我有以下一段代码,我在其中尝试将数组添加到 redis 集中,但它给了我一个错误。

我得到错误can't marshal [2]main.Info (implement encoding.BinaryMarshaler)

我还尝试将每个信息转换为[]byte并传递[][]byte...SAdd但相同的错误。我将如何以惯常的方式做到这一点?

0 投票
1 回答
8366 浏览

docker - $GOPATH/go.mod 存在,但在构建 docker 容器时不应该存在,但如果我手动运行命令则有效

我正在使用来自 Dockerfile 的 go-redis 构建一个 golang:1.14.2 docker 容器。

但是,当我尝试使用 构建容器时docker-compose up --build -d,出现此错误:$GOPATH/go.mod exists but should not ERROR: Service 'delivery' failed to build: The command '/bin/sh -c go get github.com/go-redis/redis/v7' returned a non-zero code: 1.

但是,我可以使用 dockerfile 中的图像创建一个 docker 容器docker container run -it --rm golang:1.14.2,然后运行与 Dockerfile 中完全相同的命令,并按照delivery我的预期进行操作。``

这是deliver.go:

我究竟做错了什么?我查找了此错误消息,但我所见过的解决方案都没有为我工作。

编辑:这是撰写文件:

0 投票
1 回答
576 浏览

go - 从 Redis 退订似乎不起作用

我正在尝试在 Redis 中使用 pub-sub。我要做的是打开两个redis-cli. 第一个我发出命令flushall以确保以绿色启动。

然后在另一个终端中,我打开MONITOR以打印来自 Golang 示例客户端的所有命令(代码如下)。

这是我从 MONITOR 打印的内容:

我试图让客户端对随着时间的推移打开的所有通道都有一个连接。而不是一个连接/线程来处理 Redis 的每个通道。因此,每当需要新的订阅请求时,我都会尝试从客户端删除所有以前的订阅,并对旧频道和新频道进行新订阅。

但似乎该unsubscribe命令没有按预期工作(或者我遗漏了一些东西)!

因为当我尝试获取每个频道的客户端数量时,从第一个终端:

除了当我尝试向“新”频道发送消息时,我的 go 客户端收到了两次消息!

这是生成上述命令的代码:

0 投票
1 回答
233 浏览

redis - Redis 内存使用 CLI 在集群上不起作用

我使用 go-redis 库来检查 Redis 集群上特定键的内存使用情况。该库偶尔会因错误“redis:nil”而失败,这通常意味着它访问了错误的 redis 实例以查找密钥。go-redis 库使用 Redis CLI: "command" 来获取每个命令的参数列表,并在参数列表中查找 redis 键的位置。

特别是对于内存 CLI,“命令”CLI 的输出是:

Redis 文档:https ://redis.io/commands/command 第 4 和 5 项是 arguments 中第一个 key 和 arguments 中最后一个 key 的位置。

但值为零?根据内存 CLI 文档:https ://redis.io/commands/memory-usage 第 4 项和第 5 项的值都应为 3。

这是 redis “命令” CLI 输出中的错误,还是我误解了这一点?

0 投票
2 回答
2419 浏览

go - Go Redis 将 HGetAll 结果转换为结构

我正在从 中获取数据redis.HGetAll,但没有找到将结果转换为我的 Struct 的干净方法

这个壮观的案例有什么功能吗?

现在我使用json包(marshal,然后 UnMarshal 到 struct”。

0 投票
1 回答
886 浏览

unit-testing - Golang 中的 Mock Redis 集群服务器

如何在 Golang 中模拟 redis 集群服务器?

可以使用 'github.com/alicebob/miniredis' 包模拟简单的 redis 服务器,但它不支持集群模拟。

收到以下错误: ERR unknown command 集群, with args beginning with: 槽``

我的程序使用 'github.com/go-redis/redis' 包进行 redis 实现。

例如 - 为以下客户端创建模拟服务器