gpt4 book ai didi

ruby-on-rails - Redis hmget 超时

转载 作者:IT王子 更新时间:2023-10-29 06:07:08 27 4
gpt4 key购买 nike

我正在使用 REDIS.hmget 匹配一堆字符串。整个商店有大约 14 万个 key 。我已经看到我的后端在不到 1 秒的时间内匹配超过 1k 个字符串,但我遇到了这种匹配在完成前超时的特殊情况。我得到以下崩溃跟踪:

Errno::ETIMEDOUT: Connection timed out
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/connection/ruby.rb:58:in `write'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/connection/ruby.rb:58:in `write'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:139:in `process'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:138:in `each'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:138:in `process'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:250:in `ensure_connected'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:137:in `process'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:206:in `logging'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:136:in `process'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis/client.rb:46:in `call'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis.rb:755:in `hmget'
/usr/ruby1.8.7/lib/ruby/1.8/monitor.rb:242:in `synchronize'
.bundle/gems/ruby/1.8/gems/redis-2.2.2/lib/redis.rb:754:in `hmget'

虽然它超时了,hmget 仍然返回它到目前为止匹配的内容,这似乎在 2 到 2.3k 字符串之间变化。正如我之前所说,我已经看到后端在不到 1 秒的时间内匹配超过 1k 的字符串,所以我很难想象 2.3k 的字符串会导致 Redis 超时,除非它仅在几秒钟后超时。

这里有什么我可能遗漏的吗?我应该将比赛分成 2 个较小的比赛吗?有没有办法更改默认超时间隔?

最佳答案

我最终将查找拆分为小批量,此后没有遇到问题。像这样的东西:

BATCH_MATCHING_COUNT = 1000
values = Array.new
i = 0

while i < keys.length
values.push(REDIS.hmget("hash", *keys[h, BATCH_MATCHING_COUNT]))
i+=1
end

关于ruby-on-rails - Redis hmget 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8237107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com