gpt4 book ai didi

session - Rails 4 使用 memcached 作为使用 dalli 的 session 存储

转载 作者:行者123 更新时间:2023-12-02 09:08:08 25 4
gpt4 key购买 nike

我无法使用 dalli gem 将 memcached 用作 Rails 4 的 session 存储。

这就是我所做的。

我将 dalli gem 添加到 Gemfile

gem 'dalli'

我在 config/initializers/session_store.rb 中添加了以下行

Rails.application.config.session_store ActionDispatch::Session::CacheStore, :expire_after => 20.minutes

我在development.rb中添加了以下行

config.cache_store = :dalli_store

现在,当我使用瘦服务器启动开发服务器而不启动 memcached 服务器时,我仍然可以照常登录。我是否应该收到一些错误,例如没有运行 memcached 服务器或类似的错误。

我不确定 Rails 是否使用 memcached 作为 session 存储。

有人可以告诉我在开发环境中使用 memcached 作为 session 存储时错过了什么吗?

供您引用,我一直在使用 devise 作为身份验证 gem。

谢谢

最佳答案

是的,您应该在控制台中看到如下错误:

DalliError: No server available

但是,您仍然会获得 session cookie,因为 Rails 会生成它并将其发送到浏览器。只是 Rails 没有地方存储与 cookie 相关的数据。

因此,对于演示,请尝试以下操作:

  1. 停止内存缓存。在某些 Controller 操作中执行以下操作:

    def some_action
    puts session[:test]
    session[:test] = "hello"
    end

    不应该在STDOUT中看到“hello”。

  2. 现在,重新启动 memcached 并再次执行该操作。 (可能需要刷新浏览器两次)。这次,您应该看到“hello”。

  3. 如果再次停止memcached,“hello”将不再显示。

我希望能够清楚地表明 cookie 的生成(包含 session key )和根据 cookie 值(即 session key )存储数据是两件不同的事情。当然,还要确保 memcached 确实已停止。

至于即使memcached停止也能登录的部分,请检查您是否已清除域(localhost)的所有cookie,并且在进行更改后是否已重新启动rails服务器。另外,清除 tmp/cache 目录。

PS。如果您没有看到错误 DalliError: No server available,那么这意味着 memcached 可能仍在某处运行。尝试通过 Rails 控制台通过 Dalli 访问 memcached,看看是否能够存储/获取数据。

PPS。如果您看到文件存储在 tmp 中(例如 tmp/cache/D83/760/_session_id%3A4d65e5827354d0e1e8153a4664b3caa1),则意味着 Rails 将回退到 FileStore 来存储 session 数据。

关于session - Rails 4 使用 memcached 作为使用 dalli 的 session 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20538589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com