我一直在努力解决这个错误很长一段时间:
Redis::ProtocolError: Got 'i' as initial reply byte.
If you're running in a multi-threaded environment, make sure you pass the :thread_safe
option when initializing the connection. If you're in a forking environment, such as
Unicorn, you need to connect to Redis after forking.
它在使用 Unicorn 和 Redis 的应用程序中间歇性发生。从这个redis-rb Github 问题来看,该:thread_safe
选项现在默认启用。我正在使用redis 2.2.2
,因为redis 3.0.1
与最新版本的resque
.
在我的独角兽配置中,我Redis.current.quit
在分叉后使用。
我还使用名为的 gem 连接到 Redis,ruote-redis
它是工作流引擎 Ruote 的存储实现。
如何确保我的所有 Redis 连接都是稳定的,并且我不会再收到这个影响我们应用程序正常使用的错误?