sql >> データベース >  >> NoSQL >> Redis

EM ::Synchrony#syncを簡単に使用すると、「ルートファイバー」FiberErrorが発生します-私のせいですか?

    モンキーパッチを適用しようとしているem-hiredisの正しいバージョンが見つかった場合、コードは機能すると思います。これは、依存関係が緩い場合の1つの問題です。

    これは完全に機能するコードですが、em-synchronyのマスターブランチに基づいています:

    Gemfile:

    source :rubygems
    
    gem 'em-synchrony', :git => "git://github.com/igrigorik/em-synchrony.git"
    gem 'em-hiredis', '~> 0.1.0'
    

    test.rb:

    require 'rubygems'
    require 'bundler/setup'
    
    require 'em-synchrony'
    require 'em-synchrony/em-hiredis'
    
    EventMachine.synchrony do
      redis = EM::Hiredis.connect
    
      redis.set('foo', 'bar')
      puts redis.get('foo')
    
      EM.stop
    end
    

    次に、次のコマンドで実行します:

    $ bundle
    $ ruby test.rb
    

    モンキーパッチは、パッチを適用したgemの正確なバージョンが使用されていることを確認しない限り、本質的に欠陥のあるgemパッチの方法です。これは、em-synchronyが強制するか、少なくとも検出する必要があります。




    1. LRUの有効期限が切れたメモリ内キャッシュ

    2. MapReduceのHadoopマッパークラスとは何ですか?

    3. ハード障害が発生した場合に、redisクラスター内の特定のノードのハッシュスロットを再開するにはどうすればよいですか?

    4. mongoでスーパーユーザーを作成する