2
我一直是這樣的錯誤掙扎了很長一段時間:Redis的連接在多線程環境(獨角獸)
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.
它間歇發生在使用獨角獸和Redis的應用程序。從這redis-rb Github issue它看起來:thread_safe
選項現在默認啓用。我正在使用redis 2.2.2
,因爲redis 3.0.1
與最新版本的resque
不兼容。
在我的獨角獸配置中,我在分叉之後使用了Redis.current.quit
。
我還使用名爲ruote-redis
的gem連接到Redis,這是一個工作流引擎Ruote的存儲實現。
如何確保我所有的Redis連接都穩定,並且不會再出現這個錯誤,這會影響我們應用的正常使用?
我沒有使用線程。我很樂意使用redis-rb 3.0,但resque與它不兼容。我將'ruote-redis'寶石換成了'ruote-mon',它使用Mongo進行存儲。這似乎解決了這個問題。 –