рельсы с MySQL и небольшой магазин Redis - PullRequest
1 голос
/ 27 февраля 2012

У меня есть приложение Rails 3.1, на котором запущен сервер mysql для хранения данных.90% данных в приложении очень хорошо вписываются в реляционную базу данных.

Остальные 10% - довольно большой хэш, который мне нужно вытащить, изменить и вернуть довольно быстро.Это довольно большой запрос в mysql, чтобы собрать все эти фрагменты данных между несколькими таблицами, но как только я получу его один раз, я решил сохранить его как хеш, и пользователь сможет взаимодействовать с хэшем и вносить изменения.Эти изменения никогда не сохраняются обратно в mysql, поскольку mysql не нуждается в них.

Итак, я решил добавить redis в мое приложение rails, и друг порекомендовал гем redis-objects.

Я создал active_hash модель и контроллер следующим образом:

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_hashes / id, я получаю сообщение об ошибке, что в MySQL нет таблицы active_hashes, что вернопотому что это должен быть мой redis db, как определено в модели.

Может кто-нибудь объяснить мне, как использовать обе базы данных в моем приложении, и / или указать мне учебник по этому вопросу?Я не смог ничего найти.Является ли использование Redis-Objects неправильным путем?Любые другие рекомендации?

1 Ответ

1 голос
/ 27 февраля 2012

Оказывается, это было немного смущением с моей стороны, но, надеюсь, это поможет кому-то еще.

Я не заканчивал тем, что использовал объекты redis, гем, я установил redis-rb с gem redis.Затем я установил файл конфигурации как

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...