问题标签 [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.
kubernetes - 如何使用 go-redis 从 redis 副本中读取
我们有一个 go lang 服务,它将转到 redis,为每个请求获取数据,我们也想从 redis 从节点读取数据。我们浏览了 redis 和 go-redis 库的文档,发现为了从 redis slave 读取数据,我们应该从 redis 端触发 readonly 命令。我们在 go-redis 库上使用 ClusterOptions 来设置与 redis 的只读连接。
完成所有这些之后,我们能够看到(使用监控)读取请求仅由主节点处理。我希望这不是预期的,我错过了一些东西或做错了。任何指针将不胜感激来解决这个问题。
更多上下文:上面代码中的 redisAddress 是单个 kubernetes 集群 IP。Redis 使用 kubernetes operator 部署,每个 master 有 3 个 master 和 1 个副本。
go - 使用 go-redis 在 XReadGroup 中无法使用 NoAck
我用来生成连接和读取消息的包是:“github.com/go-redis/redis”
当我从 golang 中的一个组中读取事件时,我试图声明不使用 NOACK,但是当一个新事件到达时,它会留下这个新事件,就好像它有 NOACK 一样。
在这一部分中,我声明了我如何阅读消息并声明我不使用 ack。
之后,我从 redis-cli 发送一条消息
我从我的 Golang 脚本中得到
如果消息仍在处理中但似乎丢失,则有效。
go - Redis分布式锁不生效
我是go-redis distributed lock
用来实现互斥访问的,我的服务器是单线程服务器。但同时,许多请求都获得了distributed lock
.
获取锁码是这样的:
我发现许多请求同时获得锁,结果是
我认为同时只有一个会话可以获得锁定
go - 如何在 Golang Web 服务器中通过 Go 例程管理 redis 同时更新
我想做一个在 TTL 快完成时更新 Redis 缓存的任务......比如如果缓存中的数据将在 30 秒内被删除然后更新缓存并重置 TTL,但如果缓存中的数据将在 5 分钟内被删除,然后什么都不做
我也想用 调用这个函数Go routine
,因为我希望它只是一个后台进程
现在我想在 golang gin 服务器中实现这个设置,我不确定并发请求将如何影响这个设置......
我担心的是 ,假设我的服务器同时收到 50 个请求,并且缓存也将在 30 秒内过期,所有这 50 个请求都会尝试更新我的缓存吗?
如果是,那么我该如何防止它..如何确保不会发生我的缓存的并发更新..
下面给出的是我想要做的一个小代码表示
go - 拨打tcp:6379:连接:连接被拒绝
我正在 GKE(Google Kubernetes Engine)和使用 Redis 的 GCE 实例的系统上构建应用程序。当我尝试从 GKE 上的应用程序 pod 连接到 GCE 上的 Redis 时,我收到连接被拒绝。(dial tcp <REMOTE-IP>:6379: connect: connection refused
)该应用程序是用 Go 编写的,redis 库是 go-redis(v8)。为什么我无法连接?
连接部分和出错部分的源码如下。
主机名解析了,所以不是DNS问题,而且redis-cli命令是可执行的,所以看起来也不是防火墙问题。
- 后记
这是在运行 Go 应用程序的情况下从 Pod 运行命令的结果
connection - go-redis/v8 连接池超时
** 连接池 **
连接池在使用中偶尔会出现“连接池超时”</p>
redis 使用“用于 Redis 的 Amazon ElastiCache”
谢谢!!
redis - redis 扫描不会返回所有值。(go-redis)
RedisSCAN
命令使用 small COUNT
for large 键,并非总是返回所有键。
- 10000 个键,1000 个 COUNT = 返回所有键。
- 10000 个键,10 个 COUNT = 返回并非所有键。
我想获得这么多键(1亿)的所有键,而不使用像keys
. 我应该怎么办?
go - 当我使用`go install`时,它返回的不是主包
我import "github.com/go-redis/redis/v8"
在我的代码中使用过。环境是go1.17.2 Windows AMD64
。我执行go install github.com/go-redis/redis/v8@latest
了,但结果是package github.com/go-redis/redis/v8 is not a main package
。我的操作或环境配置有什么问题。go env GO111MODULE=on
.
当我执行时go run main.go
,它显示cannot find package
在导入行github.com/go-redis/redis/v8
。
,中的内容go.mod
(使用简单的go mod init
& go mod tidy
):
go - 如果上下文为零,WithContext 方法是否需要恐慌?
我想WithContext
为 struct 编写一个方法,并从net/http
's中获取灵感Request.WithContext
。
Request.WithContext
我的问题是:如果上下文为零,为什么会恐慌:
我也应该这样吗?
有关我为什么要创建WithContext
方法的更多上下文:我正在实现一个接口,该接口在其签名中不提供上下文参数,但相信实现需要它。
更具体地说,我正在编写一个 Redis 后端,用于gorilla/session
使用Go 的官方 Redis 客户端,其中Get
andSet
方法采用context.Context
。
这个想法是,我的 redis 存储将在需要时使用新的上下文对象进行浅拷贝,然后使用:
go - 使用管道的 Redis 客户端计数
我刚刚使用管道对 GO 应用程序进行了更新,我注意到在我的 redis 监控应用程序中连接的客户端数量从 1/2 猛增到 300+
我似乎无法找到有关管道是否正常、它们作为新客户端连接或这是否是异常行为的信息。
有没有其他人看到这个?
- Redis 连接是全局的。
- Redis 设置是默认设置。
- 在一些 go 例程中使用。
示例用法..
往往会发生的情况是,每次像上面那样运行管道时,它都会创建一个新客户端——即使管道正在使用全局 redis 连接。
只发生在管道上,其他 redis 调用都很好。