无法加载hiredis扩展名(未定义符号:redisReaderFree)

时间:2014-12-14 08:30:57

标签: ruby ubuntu redis

我试图在irb中要求hiredis并且它已经向我发送了一个错误:

irb(main):001:0> require "hiredis"
WARNING: could not load hiredis extension, using (slower) pure Ruby implementation.
=> true
irb(main):002:0> 

经过进一步调查,我注意到它在代码的这一部分崩溃了。

# hiredis-rb/lib/hiredis/connection.rb
module Hiredis
  begin
    require "hiredis/ext/connection"
    Connection = Ext::Connection
  rescue LoadError
    warn "WARNING: could not load hiredis extension, using (slower) pure Ruby implementation."
    require "hiredis/ruby/connection"
    Connection = Ruby::Connection
  end
end

所以,我需要文件hiredis/ext/connection,我得到的错误是以下错误:

irb(main):001:0> require "hiredis/ext/connection"
LoadError: /home/***/projects/***/.gemset/extensions/x86_64-linux/2.1.0-static/hiredis-0.5.2/hiredis/ext/hiredis_ext.so: 
undefined symbol: redisReaderFree -
/home/***/projects/***/.gemset/extensions/x86_64-linux/2.1.0-static/hiredis-0.5.2/hiredis/ext/hiredis_ext.so
from /home/***/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'

我使用的是Ubuntu和Redis的最新稳定版本(2.8.18)。我该如何解决?谢谢!

编辑:

所以在看了hiredis-rb页面后https://github.com/redis/hiredis-rb,它说我应该做以下事情:

  

要在redis-rb中使用hiredis,您需要要求   在创建新连接之前使用redis / connection / hiredis。

所以我在irb上做了require "redis/connection/hiredis"然后require "hiredis",一切正常,没有更多的警告。

但现在这些警告现在已经不复存在了。我认为我每次都需要require "redis/connection/hiredis"才能使用它,但现在它才有效。所以我不知道为什么它现在不再警告我了。我认为在irb会话期间调用require "redis/connection/hiredis"仅适用于该会话,而不是所有后续会话。

0 个答案:

没有答案