gpt4 book ai didi

ruby-on-rails - 使用全局资源连接到 redis 服务器的原因

转载 作者:IT王子 更新时间:2023-10-29 06:06:37 33 4
gpt4 key购买 nike

所以,最近我把我app里面所有session相关的信息都搬到了redis中。一切都运行良好,现在我没有遇到与 cookie 相关的问题(尤其是来自 IE)。

为此,我阅读了一些博客,它们都将 redis-connector 定义为配置中的全局变量,如

$redis = Redis.new(:host => 'localhost', :port => 6379)

现在有一些事情困扰着我:

  1. 定义一个全局资源意味着我只有一个到 redis 的连接。当我必须处理多个请求时,它会在我的系统中造成瓶颈吗?

  2. 此外,当多个请求到达时,Rails 是否会将对 redis 的请求排入队列,因为连接是全局资源,以防它已被使用?

  3. Redis 支持多实例。创建多个实例不会提高性能吗?

最佳答案

Redis gem 中没有包含标准连接池。如果我们将 Rails 视为单线程执行模型,这听起来问题不大。

在多线程环境中使用它可能是邪恶的(以后台作业为例)。因此,连接池通常是一个好主意。

您可以使用 connection_pool gem 为 Redis 实现它.

Sidekiq 也使用这个 gem 连接到 Redis。可见herehere .此外,sidekiq 作者与 connection_pool 作者是同一个人,https://github.com/mperham .

关于您的问题:

  1. 多个请求仍然不意味着多线程,因此在您使用线程之前,这种方法可能会很好地工作;
  2. Rails 不会为您的数据库扮演连接池的角色;
  3. 如果在多线程环境中使用,它将提高性能(并避免某些错误)。

关于ruby-on-rails - 使用全局资源连接到 redis 服务器的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551981/

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