Ruby 长字符串上的Redis超时(低于最大512 MB)

Ruby 长字符串上的Redis超时(低于最大512 MB),ruby,redis,Ruby,Redis,这是使用 我在五秒钟后得到超时错误(默认超时)。当我将超时时间提高到10分钟时,它仍然失败。这种情况是否发生似乎还取决于过去对client.set的调用,即使是在不同的键上 根据,字符串的最大大小为512 MB。这是否过于乐观 模糊地暗示Redis不适合处理长字符串。这是怎么回事,还是Ruby库中的问题?这不是Redis的限制,更可能是客户端设置。使用不同的客户端(Python的redis py)重复该示例不会重现该问题: In [1]: long_string = "x" * 9000000

这是使用

我在五秒钟后得到超时错误(默认超时)。当我将超时时间提高到10分钟时,它仍然失败。这种情况是否发生似乎还取决于过去对
client.set
的调用,即使是在不同的键上

根据,字符串的最大大小为512 MB。这是否过于乐观


模糊地暗示Redis不适合处理长字符串。这是怎么回事,还是Ruby库中的问题?

这不是Redis的限制,更可能是客户端设置。使用不同的客户端(Python的redis py)重复该示例不会重现该问题:

In [1]: long_string = "x" * 9000000

In [2]: len(long_string) / (1024.0 ** 2)
Out[2]: 8.58306884765625

In [3]: import redis

In [4]: r = redis.StrictRedis()

In [5]: r.set('test', long_string)
Out[5]: True

In [6]: longer = long_string * 50

In [7]: r.set('test2', longer)
Out[7]: True

In [8]: r.strlen('test2')
Out[8]: 450000000

您的Redis是在同一台机器上运行还是在另一台服务器上运行?@Spickerman:我有一个本地Redis实例用于开发,还有一个Heroku Redis实例用于生产,我们在这两台机器上都可以看到。(虽然本地实例似乎能够在执行kaput之前处理更长的字符串)。很好,我将向他们报告错误。谢谢
In [1]: long_string = "x" * 9000000

In [2]: len(long_string) / (1024.0 ** 2)
Out[2]: 8.58306884765625

In [3]: import redis

In [4]: r = redis.StrictRedis()

In [5]: r.set('test', long_string)
Out[5]: True

In [6]: longer = long_string * 50

In [7]: r.set('test2', longer)
Out[7]: True

In [8]: r.strlen('test2')
Out[8]: 450000000