问题标签 [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.
go - redigo 和 gob 如何检索 gob 数据切片
我正在使用“RPUSH”命令推入我的 redis 基础对象。
Redigo 做我所期待的,它正在推动所有数据结构 gob 编码。
现在我正在尝试检索它们:
对它们进行解码的最佳方法是什么?我想将它们作为接口的一部分返回{}。但即使我的对象被编码为 gob 数据。都是用redis的方式推送的,那么从gob的角度看能不能算是一个切片呢?
我可以迭代其他列表并一一解码。但我对效率没有信心。我假设 gob 想要一个以它的方式编码的切片结构。所以我的问题是:有没有什么技巧可以有效地将我的 gob 数据片段解码为数据结构的集合?或者我应该以另一种方式存储我的数据结构(我假设用 RPUSH 存储我的数据可以防止非原子操作)
go - Redigo:在 apache 负载测试中出错
我正在将我的go
程序连接到redis
using library redigo
。当我运行一个请求时,我得到了正确的结果。但是在负载测试中,使用 apache 基准测试工具,它在以下情况下工作:
但是,当请求是:
我收到错误:
这是我的代码:
如何使用 apache 基准测试工具处理至少 40 个并发请求。
注意:我没有更改我的 redis conf 文件中的任何内容
运行 apache 基准测试工具时,我得到以下响应。仅完成了 15 个请求。
go - HMGET:传递参数时为空结果
使用 redigo,我正在尝试使用 HMGET。我在字段中传递一个字符串切片作为参数。它不起作用,返回空结果。
这是有效的
任何建议为什么作为参数传递的字段不起作用?
go - 从redigo调用lua脚本抛出错误的args数量错误
我正在尝试使用redigo在 redis 上执行 lua 脚本。我的代码如下所示:-
但是在执行代码时会抛出错误:-
有人可以让我知道出了什么问题以及如何使这项工作吗?
环境:-
- 去 - 1.7.4
编辑
正如答案中所建议的,我将调用修改为:-
但它给出的输出为: -
但是从redis-cli
我得到的输出为: -
go - conn.flush() 不会将所有记录刷新到 redis
这是代码
如果我使用c.Close(),总集100000,真正的sortedset计数100000。但是如果我使用c.Flush(),总也设置100000,真正的sortedset计数小于100000(96932);如果我使用time.Sleep() 在 main 函数的末尾,总数也是 100000。
当 main func 退出时,flush func 没有完成?为什么?谢谢你!
go - 带有 Redigo 的 GEOADD 命令
这是我正在尝试的,使用 Redigo ("github.com/garyburd/redigo/redis"):
虽然使用 redis-cli 这工作正常:
其他命令工作正常,这只是我第一次使用 GEOADD,它显然不像我期望的那样工作。有人有想法吗?
go - redigo 连接池 - 为什么在删除陈旧连接时释放锁
Redigo 是 redis 数据库的 golang 客户端。它使用 structPool
来维护一个连接池。这个结构持有一个互斥锁,用于应用程序并行放置和获取连接。
在其get
方法中,连接池首先删除过时的(空闲超时)连接。当发现一个过时的连接时,池将其弹出,释放锁,然后关闭连接,再次尝试获取锁。
为什么池解锁并尝试再次获取锁,而不是在函数返回之前解锁?我想关闭一个连接可能会花费很多时间,这会减慢等待这个互斥锁的其他 goroutine。
这是整个Pool get 方法
go - string 和 redis.String (redigo) 类型在 golang 中不匹配
我陷入了这个比较:
这表明:
这是Notification
类型
这就是我创建notification
结构的方式
notification.Type == "sms"
我的问题是为什么false
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 秒的存储桶,从而扭曲了结果。我相信这个讨论会在某些时候对某人有用。
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 ?我是否泄漏了一些连接?