From 53fb7b1aa84a76d66ef6973208e1c76a100774f3 Mon Sep 17 00:00:00 2001
From: Eugen Rochko <eugen@zeonfederated.com>
Date: Wed, 2 Nov 2016 13:30:52 +0100
Subject: [PATCH] Replace in-memory cache store with redis store, should
 decrease memory footprint of each running process by 128mb

---
 Gemfile                           |  1 +
 Gemfile.lock                      | 17 +++++++++++++++++
 config/environments/production.rb |  7 ++++++-
 3 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/Gemfile b/Gemfile
index 1cab16a391..f97d42cdfc 100644
--- a/Gemfile
+++ b/Gemfile
@@ -69,4 +69,5 @@ end
 group :production do
   gem 'rails_12factor'
   gem 'lograge'
+  gem 'redis-rails'
 end
diff --git a/Gemfile.lock b/Gemfile.lock
index be3f699ee8..9afb47788f 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -256,6 +256,22 @@ GEM
       railties (>= 3.2)
       tilt
     redis (3.3.1)
+    redis-actionpack (5.0.0)
+      actionpack (>= 4.0.0, < 6)
+      redis-rack (~> 2.0.0.pre)
+      redis-store (~> 1.2.0.pre)
+    redis-activesupport (5.0.1)
+      activesupport (>= 3, < 6)
+      redis-store (~> 1.2.0)
+    redis-rack (2.0.0)
+      rack (~> 2.0)
+      redis-store (~> 1.2.0)
+    redis-rails (5.0.1)
+      redis-actionpack (~> 5.0.0)
+      redis-activesupport (~> 5.0.0)
+      redis-store (~> 1.2.0)
+    redis-store (1.2.0)
+      redis (>= 2.2)
     ref (2.0.0)
     responders (2.3.0)
       railties (>= 4.2.0, < 5.1)
@@ -396,6 +412,7 @@ DEPENDENCIES
   rails_autolink
   react-rails
   redis (~> 3.2)
+  redis-rails
   rspec-rails
   rspec-sidekiq
   rubocop
diff --git a/config/environments/production.rb b/config/environments/production.rb
index b90505f68f..f2071f7a23 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -45,7 +45,12 @@ Rails.application.configure do
   # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
 
   # Use a different cache store in production.
-  config.cache_store = :memory_store, { size: 128.megabytes }
+  config.cache_store = :redis_store, {
+    host: ENV['REDIS_HOST'] || 'localhost',
+    port: ENV['REDIS_PORT'] || 6379,
+    db: 0,
+    namespace: 'cache'
+  }
 
   # Enable serving of images, stylesheets, and JavaScripts from an asset server.
   # config.action_controller.asset_host = 'http://assets.example.com'
-- 
GitLab