问题标签 [redigo]

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 投票
2 回答
6290 浏览

go - Redigo 多请求

我以前一直在使用这个:

确保返回的数据是字节切片。

但是,我现在需要向 Redis 请求添加一个额外的命令,所以我有这样的东西:

但现在我似乎无法让GET命令返回一段字节。我试过redis.Bytes像下面这样添加,但没有运气。

0 投票
1 回答
1512 浏览

go - golang webservice意外崩溃而没有错误

我正在用 golang 开发一个网络服务。它使用 net/http 包和其他包,如 github.com/go-sql-driver/mysql 和 redigo (redis)。我开发时没有问题,没有错误。当我将它作为后台服务放在生产服务器上时(即:使用 ./myProgram & 启动)。问题是,几次之后,这是不一样的:它可能是几分钟或几个小时,它只是崩溃。该服务不再出现在 netstat 中:它已关闭。我查看内存/CPU 消耗/打开的 tcp 连接,没有任何异常。我还将有关我的服务的错误和请求的信息记录在一个文件中,但没有任何异常,它只是崩溃了。

如果您有任何想法,请告诉我。或者我可以跟踪错误的任何想法。

0 投票
2 回答
14881 浏览

go - 从redis中获取所有密钥

如何使用redigo获取数据库中Redis的所有键并将其存储在golang中的列表或数组中?

0 投票
2 回答
1730 浏览

go - Redigo:尝试连接池时无效的内存地址或 nil 指针取消引用

Redis 连接中……!恐慌:运行时错误:无效的内存地址或
nil 指针取消引用 [信号 0xb 代码=0x1 addr=0x28 pc=0x40154b]
goroutine 1 [运行]:runtime.panic(0x52c6e0, 0x6b6348)
/usr/lib/go/src/pkg/ runtime/panic.c:266 +0xb6
main.func·001(0xc21005102c, 0x0, 0x4bcd4c, 0x1)
/home/vinay10949/redischeck/redischeck.go:21 +0x10b
github.com/garyburd/redigo/redis.(*Pool ).get(0xc210051000, 0x0,
0xc2100378f0, 0x42dbdf, 0x7fbe9c177070) /usr/lib/go/src/pkg/github.com/garyburd/redigo/redis/pool.go:250
+0x3a2 github.com/garyburd/redigo/ redis.(*Pool).Get(0xc210051000, 0x1, 0x1) > /usr/lib/go/src/pkg/github.com/garyburd/redigo/redis/pool.go:150
+0x27 main.main() /家/

vinay10949/redischeck/redischeck.go:29 +0x13e

0 投票
1 回答
4601 浏览

go - 如何在 Golang 中为 Redis(redigo) Pubsub 编写更好的 Receive()?

在上面的代码中(取自Redigo doc),如果连接丢失,所有订阅也会丢失。从丢失的连接中恢复并重新订阅的更好方法是什么。

0 投票
2 回答
915 浏览

go - Redis如何使用golang监听1000到10000个列表的变化?

我在 Redis 中存储了 1000 到 10,000 个键,它们的值类型是列表。当将新项目添加到任何现有列表时,我需要通知我的 golang 程序。收到通知后,我需要生成一个新的 goroutine 并执行一个小操作。

我正在将 redigo 用于 redis 连接池。

在不重载 Redis 实例的情况下,解决此问题的最佳方法是什么?

0 投票
1 回答
402 浏览

go - 使用 redigomock 测试事务 (MULTI) 命令

在单元测试中,如何设置 redigomock 来测试包含多个命令的 MULTI 调用?

0 投票
1 回答
2609 浏览

go - redigo golang 客户端是否支持键空间事件通知?

我正在使用redigo 库在 golang 中对 redis 客户端进行原型设计,以获取键空间事件的通知。我修改了 redis.conf 以将 notify-keyspace-events 设置为“KEA”以接收所有事件。但是,当我使用 cli 将密钥添加/更新/删除到数据库中时,我看不到任何事件在客户端上被触发。

使用 redigo 触发事件的示例代码:

redigo 是否支持键空间事件通知?我可能在这里做错了什么?

0 投票
1 回答
2581 浏览

go - 关于 Redigo 和并发的一些问题

我已经阅读了可以在此处找到的整个 Redigo 文档。 https://godoc.org/github.com/garyburd/redigo/redis#pkg-variables

这里的文档明确指出连接不支持并发调用 Send()、Flush() 或 Receive() 方法。

连接不支持并发调用写入方法(发送、刷新)或并发调用读取方法(接收)。连接确实允许并发读取器和写入器。

然后它指出,由于 Do 方法可以是 Send()、Flush() 和 Receive() 的组合,我们不能同时使用 Do()(与)其他方法。

由于 Do 方法结合了 Send、Flush 和 Receive 的功能,因此 Do 方法不能与其他方法同时调用。

这是否意味着我们可以使用存储在全局变量中的单个连接单独同时使用 Do(),只要我们不将它与其他方法混合使用?

例如像这样:

然后在一些 go 例程中调用 Do() 方法,如下所示:

后来文档说,为了对 Redis 进行完全并发访问,我们需要创建一个池并从池中获取连接,并在完成后释放它们。

这是否意味着我可以根据需要使用 Send()、Flush() 和 Receive(),只要我从池中获得连接?所以换句话说,每次我需要在 go 例程中做某事时,我都必须从池中获取新连接,而不是重用全局连接?这是否意味着只要我从池中获得新连接,我就可以将 Do() 方法与例如 Send() 一起使用?

所以总结一下:

1) 只要不将 Do() 方法与 Send、Flush 和 Receive 方法一起使用,我可以同时使用它吗?

2) 只要​​我从池中获得新的连接并在完成后释放它,我就可以使用我想要的一切吗?

3) 如果 (1) 为真,这会影响性能吗?在我提供的示例中,仅使用 Do() 方法同时使用全局连接,而不是与发送、刷新和接收混为一谈,是否更好?

0 投票
1 回答
921 浏览

go - 如何在 redigomock 中期望非字符串值

我是 redigomock 的新手,通过文档和谷歌搜索,我根本找不到一个有效的例子。我遗漏了一些明显的东西,但我希望我的测试能够正常工作。

鉴于此代码:

而这个测试:

我收到一个错误:

redigo:Bool 的意外类型,得到了 bool 类型

我尝试了许多方法来强制将值转换为预期结果,但无济于事。

任何帮助表示赞赏,在此先感谢您!