これはRuby clientを使用しています。長い文字列でRedisタイムアウト(最大512 MB未満)
> long_string = 'x' * 9_000_000; "created"
"created"
> long_string.bytesize/(1024.0 * 1024.0) # size in megabytes
8.58306884765625
> client.set('test', long_string)
Redis::TimeoutError: Connection timed out
5秒後にタイムアウトエラーが発生します(デフォルトのタイムアウト)。タイムアウトを10分にしても、それでも失敗します。これが起こるかどうかは、異なるキーでさえも、client.set
への過去の呼び出しに依存するようです。
documentationによると、文字列の最大サイズは512 MBです。これは楽観的過ぎ?
This answerは、Redisが長い文字列を扱うことを意図していないことを漠然と示唆しています。それは何が起こっているのですか、それともRubyライブラリの問題ですか?
Redisは同じマシン上または別のサーバー上で実行されていますか? – spickermann
@spickermann:開発用のローカルRedisインスタンスと本番用のHeroku Redisインスタンスがあり、両方で表示しています。 (ただし、ローカルインスタンスはkaputを実行する前に長い文字列を処理できるように見えますが)。 –