【问题标题】:Using both redis and memcached, should I still use the session api?同时使用redis和memcached,我还应该使用会话api吗?
【发布时间】:2011-07-04 01:48:04
【问题描述】:

如果我同时使用 redis 和 memcached,仍然使用内置会话 API 是否有意义?

我知道 ruby​​ on rails 可以通过其内置 api 轻松使用 memcached,但我想同时使用 memcached 和 redis。

如果我必须手动访问 redis,我应该在什么时候根据请求连接到它?

【问题讨论】:

    标签: ruby-on-rails memcached redis


    【解决方案1】:

    您仍然可以将 Rails 会话 API 用于其他商店,包括 RedisMemcached。存储就是存储会话数据的地方。 Rails 会话 API 仍会为您管理会话。

    【讨论】:

    • 我想在一个请求中同时使用redis和memcached
    【解决方案2】:

    在 Ruby 中,您可以将数据存储在任何数据存储中。不确定您是否可以使用内置的会话 API 将同一会话存储到 Redis 和 memcached。

    如果您手动访问 Redis,只需尽可能少地连接它,并在适当的情况下使用持久连接来提高性能。

    对于 PHP 和其他服务器端脚本语言,您可能不想使用内置会话管理。许多服务器端脚本语言(即 PHP)将会话信息存储在硬盘上的临时目录中。只有会话 ID 存储在 cookie 中。 Redis 和 memcached 的一个优点是它们可以避免磁盘访问并将所有会话/用户信息存储在内存中。因此,与其使用内置的会话 API,不如使用 cookie 编写自己的小型会话 API,并与 Redis 或 memcached 交互。

    【讨论】:

    • 在 Rails 中,您可以选择会话数据的存储位置。默认情况下,它将其存储在 cookie 中,但使用 MySQL 存储是一种常见的解决方案。不幸的是,这有可能是pretty expensive,因此您可以选择某种内存存储。不使用基于文件的存储。
    • 嵌入到 Rails 中的会话 API 抽象了存储机制,从而完全避免了您描述的问题。 Ruby on Rails 的行为与 PHP 完全不同。
    【解决方案3】:

    您没有提及您在哪些上下文中使用 Redis 和 Memcached(或为什么同时使用两者,或者 如何),但我猜您正在考虑会话数据和缓存(基于这个较早的问题:Rails and caching, is it easy to switch between memcache and redis?

    在任何一种情况下,使用 Rails 提供的 API 都没有真正的价值,除非您有特别独特的用例。

    如果您绝对必须使用两者,只需告诉 Rails 您希望将哪个存储引擎用于哪个功能。

    如果你在做其他事情,也许更多的信息会帮助人们给出更有用的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 2021-05-18
      • 2014-04-09
      • 2016-12-26
      • 1970-01-01
      • 2016-10-04
      • 2014-12-23
      相关资源
      最近更新 更多