У меня есть массив объектов.Я не могу сохранить его в БД по соображениям производительности.Я попытался сохранить массив в переменных Global ($ var) и Class (@@ var) (в контроллере), но это был один и тот же массив для всех пользователей.Он должен быть уникальным для каждого пользовательского сеанса, и в каждом сеансе он должен иметь возможность быстрого изменения.
Я понимаю, что сеанс [] - не лучшее решение.Какой самый лучший способ?
Я делаю что-то подобное $lines_rules << Processing::rule_creator(...)
каждый раз, когда запускаю действие в контроллере.
$ lines_rules - это мой массив объектов.
Почему БД не подходит для магазина $ lines_rules?В $ lines_rules я храню объекты с лямбда-функцией.Когда пользователь нажимает кнопку, мне нужно вызвать каждую лямбда-функцию с помощью пользовательского ввода и сохранить результат.Затем я загружаю новые объекты в $ lines_rules.Таким образом, каждый запрос меняет $ lines_rules.Я думаю, что работа с памятью - лучший способ для производительности.
ОБНОВЛЕНИЕ
Я использую $global_hash [ session[:session_id] ]
и этот метод для экономии ресурсов:
def dead_sessions_killer
ActiveRecord::SessionStore::Session.where(["updated_at < ?", 30.minutes.ago]).each do |session|
$global_hash.delete_if {|key, value| key == session.session_id }
session.delete
end
end