Redis®*: 与 Ruby 一起使用

如何将 Redis 与 Ruby 连接

👋 欢迎查阅 Stackhero 文档!

Stackhero 提供即开即用的 Redis cloud 解决方案,带来多项优势,包括:

  • 集成 Redis Commander Web 管理界面
  • 无限制的消息大小与传输。
  • 一键完成升级,操作便捷。
  • 基于专属私有基础设施,实现卓越性能与强大安全性

节省时间简化运维:仅需 5 分钟即可体验 Stackhero 的 Redis cloud 托管 方案!

Redis(全称为 Remote Dictionary Server)是一款开源的内存数据库,具有卓越的性能和灵活性。

Redis 通常被归类为 NoSQL 数据库,支持多种数据结构,如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)以及有序集合(sorted sets)等。凭借其高速操作能力和对大规模数据的处理能力,Redis 已成为缓存、实时分析、消息传递等多种场景的热门选择。

Redis 可以与 Ruby 及 Ruby on Rails 无缝集成,以提升应用的性能、可扩展性和灵活性。Ruby 开发者通过 Redis 可以实现缓存、会话管理、实时数据处理、后台任务处理等多种功能。

以下是 Redis 与 Ruby 及 Ruby on Rails 常见的集成方式:

  1. 缓存(Caching):在 Rails 应用中,Redis 可作为缓存存储,加快响应速度并减轻数据库负载。
  2. 后台任务处理(Background job processing):Redis 作为 Sidekiq 和 Resque 等主流后台任务处理库的后端,提高了 Rails 应用中后台任务的性能和可靠性。
  3. 实时功能(Real-time features):借助 Redis 的 Pub/Sub 功能,Rails 应用可以实现实时通知、聊天系统、实时分析等功能,通过高效快速的消息传递连接不同的应用组件。

Stackhero 提供即开即用的 Ruby cloud 解决方案,带来多项优势,包括:

  • 通过简单的 git push几秒钟内即可部署您的应用。
  • 使用您自己的域名,并享受自动配置的HTTPS证书,提升安全性。
  • 享受自动备份一键更新,以及简单、透明、可预测的定价,让您高枕无忧。
  • 依托专属私有基础设施,获得卓越的性能和强大的安全性

节省时间简化运维:只需5 分钟即可体验 Stackhero 的 Ruby cloud hosting 解决方案。

首先,您需要安装 "redis" gem:

bundle add redis

接下来,编辑 config/environments/production.rb 文件,添加如下配置:

config.cache_store = :redis_cache_store, { url: ENV["REDIS_URL"] }

最后,定义环境变量 REDIS_URL。您可以使用如下格式的 URL,并将 <yourPassword><XXXXXX> 替换为您的信息:

REDIS_URL="rediss://default:<yourPassword>@<XXXXXX>.stackhero-network.com:<PORT_TLS>"

如需了解更多关于将 Redis 配置为 Ruby on Rails 缓存系统的信息,请参考 官方 Rails 文档

Sidekiq 会自动使用环境变量 REDIS_URL 中定义的 Redis 服务器。

您可以如下设置环境变量 REDIS_URL,将 <password><XXXXXX> 替换为您的信息:

REDIS_URL="rediss://default:<password>@<XXXXXX>.stackhero-network.com:<PORT_TLS>"

默认情况下,Sidekiq 的配置在网络中断时没有任何容错机制。为提升稳定性,建议您在 config/initializers/sidekiq.rb 中调整 Sidekiq 客户端配置:

# 文件 config/initializers/sidekiq.rb
Sidekiq.configure_client do |config|
  config.redis = {
    network_timeout: 5, # 设置超时时间为 5 秒
    pool_timeout: 5, # 设置超时时间为 5 秒
    reconnect_attempts: Array.new(240, 0.5) # 尝试重连 240 次,每 0.5 秒一次(共 120 秒/2 分钟),之后才会报错
  }
end

该配置确保当 Redis 服务器不可用时,客户端会在 2 分钟内持续重试,之后才会报错。 例如,这可以为 Redis 服务器的重启留出时间。 您可根据实际 Sidekiq 使用情况,调整该参数以满足您的具体需求。

如需了解更多关于 Sidekiq 与 Redis 的信息,请参考 官方文档

Resque 会自动使用环境变量 REDIS_URL 中定义的 Redis 服务器。

您可以如下设置环境变量 REDIS_URL,将 <yourPassword><XXXXXX> 替换为您的信息:

REDIS_URL="rediss://default:<yourPassword>@<XXXXXX>.stackhero-network.com:<PORT_TLS>"

如需了解更多关于 Resque 与 Redis 的信息,请参考 官方文档