2012-02-27 9 views
1

私はデータを格納するためのMySQLサーバーを実行しているRails 3.1アプリケーションがあります。 アプリ内のデータの90%は、リレーショナルデータベースによく収まります。MySQLとレールと小さな赤いストア

もう一方の10%は、私が引き出し、変更して、かなり早く戻す必要がある非常に大きなハッシュです。これらのデータをまとめて複数のテーブルに渡すことはかなり大規模なクエリですが、いったんこれを保存すると、ハッシュとして保存し、ユーザーがハッシュを操作して変更を加えることができます。これらの変更は、mysqlには必要ないので、mysqlには永続化されることはありません。

私は私のレールのアプリケーションにredisを追加することにしました。そしてredisオブジェクトの宝石は、友人によって推薦されました。

それがになっているので、私は、私はactive_hashes/IDに移動したときに、私は右である何のMySQLのテーブルactive_hashes、存在しないというエラーを取得するので、

 
class ActiveHash < ActiveRecord::Base 
    include Redis::Objects 
end 

class ActiveHashesController < ApplicationController 

    def show 
    #this is a big query with a bunch of merges, but simplified here as it isn't important 
    active = Game.find(params[:id]) 

    active_hash_in_redis = ActiveHash.new() 
     if active_hash_in_redis.save 
      render :json => active_hash 
     else 
      render :text => "didn't save" 
     end 
    end 

end 

として私active_hashモデルとコントローラを作成しましたモデルで定義されているように私のredis dbになります。

私のアプリで両方のdbsを使用する方法を教えてもらえますか?これを行うにはチュートリアルを教えてください。私は何かを見つけることができませんでした。 Redis-Objectsを使ってこれを行う方法が間違っていますか?その他の推奨事項はありますか?

答えて

1

これは私にとってはちょっと混乱していましたが、うまくいけば、これは他の人に役立ちます。

私はredis-objects、gemを使用して終了しませんでした。私はgem redisでredis-rbをインストールしました。 は、それから私はセットアップ私のモデルは私のコントローラでは、現時点では実際に空白になって

 
require 'redis' 
$redis = Redis.new() 

などの設定ファイルを、私は

 
class ActiveHashesController < ApplicationController 

    def show 
    #this is a big query with a bunch of merges, but simplified here as it isn't important 
    active = Game.find(params[:id]) 

    $redis.set params[:id], active.to_json 
    get_game = $redis.get params[:id] 
    render :json => get_game 

     end 
    end 

end 

を使用しました
関連する問題