问题标签 [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 投票
1 回答
1645 浏览

go - redigo 和 gob 如何检索 gob 数据切片

我正在使用“RPUSH”命令推入我的 redis 基础对象。

Redigo 做我所期待的,它正在推动所有数据结构 gob 编码。

现在我正在尝试检索它们:

对它们进行解码的最佳方法是什么?我想将它们作为接口的一部分返回{}。但即使我的对象被编码为 gob 数据。都是用redis的方式推送的,那么从gob的角度看能不能算是一个切片呢?

我可以迭代其他列表并一一解码。但我对效率没有信心。我假设 gob 想要一个以它的方式编码的切片结构。所以我的问题是:有没有什么技巧可以有效地将我的 gob 数据片段解码为数据结构的集合?或者我应该以另一种方式存储我的数据结构(我假设用 RPUSH 存储我的数据可以防止非原子操作)

0 投票
1 回答
204 浏览

go - Redigo:在 apache 负载测试中出错

我正在将我的go程序连接到redisusing library redigo。当我运行一个请求时,我得到了正确的结果。但是在负载测试中,使用 apache 基准测试工具,它在以下情况下工作:

但是,当请求是:

我收到错误:

这是我的代码:

如何使用 apache 基准测试工具处理至少 40 个并发请求。

注意:我没有更改我的 redis conf 文件中的任何内容

运行 apache 基准测试工具时,我得到以下响应。仅完成了 15 个请求。

0 投票
1 回答
1316 浏览

go - HMGET:传递参数时为空结果

使用 redigo,我正在尝试使用 HMGET。我在字段中传递一个字符串切片作为参数。它不起作用,返回空结果。

这是有效的

任何建议为什么作为参数传递的字段不起作用?

0 投票
3 回答
1955 浏览

go - 从redigo调用lua脚本抛出错误的args数量错误

我正在尝试使用redigo在 redis 上执行 lua 脚本。我的代码如下所示:-

但是在执行代码时会抛出错误:-

有人可以让我知道出了什么问题以及如何使这项工作吗?

环境:-

  • 去 - 1.7.4

编辑

正如答案中所建议的,我将调用修改为:-

但它给出的输出为: -

但是从redis-cli我得到的输出为: -

0 投票
1 回答
668 浏览

go - conn.flush() 不会将所有记录刷新到 redis

这是代码

如果我使用c.Close(),总集100000,真正的sortedset计数100000。但是如果我使用c.Flush(),总也设置100000,真正的sortedset计数小于100000(96932);如果我使用time.Sleep() 在 main 函数的末尾,总数也是 100000。

当 main func 退出时,flush func 没有完成?为什么?谢谢你!

0 投票
1 回答
331 浏览

go - 带有 Redigo 的 GEOADD 命令

这是我正在尝试的,使用 Redigo ("github.com/garyburd/redigo/redis"):

虽然使用 redis-cli 这工作正常:

其他命令工作正常,这只是我第一次使用 GEOADD,它显然不像我期望的那样工作。有人有想法吗?

0 投票
1 回答
1197 浏览

go - redigo 连接池 - 为什么在删除陈旧连接时释放锁

Redigo 是 redis 数据库的 golang 客户端。它使用 structPool来维护一个连接池。这个结构持有一个互斥锁,用于应用程序并行放置和获取连接。

在其get方法中,连接池首先删除过时的(空闲超时)连接。当发现一个过时的连接时,池将其弹出,释放锁,然后关闭连接,再次尝试获取锁。

为什么池解锁并尝试再次获取锁,而不是在函数返回之前解锁?我想关闭一个连接可能会花费很多时间,这会减慢等待这个互斥锁的其他 goroutine。

这是整个Pool get 方法

0 投票
0 回答
104 浏览

go - string 和 redis.String (redigo) 类型在 golang 中不匹配

我陷入了这个比较:

这表明:

这是Notification类型

这就是我创建notification结构的方式

notification.Type == "sms"我的问题是为什么false

0 投票
1 回答
1342 浏览

go - Redigo:当redis服务器关闭时快速失败

当我连接的redis服务器出现故障时,我正在努力快速失败,想要一个强大的解决方案。

我正在使用redigo,我正在设置一个连接池,如下所示:

并请求新的连接并像这样使用它们:

当 redis 启动时,这很好用,事情会在几毫秒内发生。当我将 redis 降低到第 75 个百分位时,我的第 75 个百分位上升到 7+ 秒,而我的第 99 个百分位上升到 10 秒(我可以在 prometheus 上看到这个)

我究竟做错了什么?为什么这不会更快地超时?我的印象是redis.DialConnectTimeout(1*time.Second)将问题限制在 1 秒,但似乎并非如此。

编辑:事实证明这是由于我在 Prometheus 中犯的一个错误,将存储桶设置得太大,所以当 redis 在一秒钟后超时正常时,我的存储桶已经设置了一个 1s 存储桶和一个 10s 存储桶,所以我的请求(刚刚超过 1 秒)最终进入了 10 秒的存储桶,从而扭曲了结果。我相信这个讨论会在某些时候对某人有用。

0 投票
1 回答
775 浏览

go - 使用 redigo 池时并发后的 TIME_WAIT 过多

我将 github.com/garyburd/redigo 用于我的应用程序 go 例程,同时读取和写入 Redis。我在 Singleton Pattern 中使用 redigo NewRedisClient(),并设置 MAXACTIVE=100, MAXIDLE=100, IDLETIMEOUT=60。

应用程序启动了,我发现 Redis 服务器有很多 TIME_WAIT 增长。喜欢:

而且我每次 pool.Get() 时都会打印活动计数和空闲计数,它显示:

为什么有这么多 TIME_WAIT ?我是否泄漏了一些连接?