代码之家  ›  专栏  ›  技术社区  ›  codematix

在Rails 5中使用不同的redis存储进行会话和缓存

  •  0
  • codematix  · 技术社区  · 6 年前

    我是Ruby和Rails的新手。我正在使用rubyonrails5.2构建一个web应用程序。我已经将其配置为使用 redis-cache-store 要管理视图缓存,请执行以下操作:

    config.cache_store = :redis_cache_store, { driver: :hiredis, namespace: "my-app", compress: true, url: ENV["REDIS_URL"] }
    

    我已经将会话存储配置为:

    Rails.application.config.session_store :cache_store, {
      key: "sid",
      expire_after: 30.minutes
    }
    

    所以我用的是 :cache_store 作为我的会话存储。据我所知,这意味着视图缓存和会话数据的条目存储在同一个Redis数据库中。

    据我所知 redis-rails 如果使用Rails 5.2,gem不再是必需的,因为它内置了对redis的支持- https://github.com/redis-store/redis-rails#a-quick-note-about-rails-52 . 所以,我没有用过那颗宝石。

    有没有办法为会话使用不同的redis存储,为视图缓存使用不同的redis存储?

    或者我是想做一些在铁轨上不寻常的事情?

    1 回复  |  直到 6 年前
        1
  •  2
  •   matthewd    6 年前

    要单独配置会话存储以使用Redis,需要使用提供Redis会话存储的gem: redis-store (注 redis-activesupport 不赞成,但是 redis-actionpack 不是),或者 redis-session-store .

    在使用 :cache_store 会话存储,因为它存储会话 在实际缓存中 ... 它不仅仅是“类似缓存”的存储,因此它不能覆盖缓存本身/与缓存本身的行为不同。

    将会话内容存储在cookie之外的其他位置是 有点 不寻常的是,现在会话cookie既加密又防篡改,但这并不罕见。如果你想的话,Redis是个不错的选择。