Redis®*: 与 Ruby 搭配使用
如何将 Redis 与 Ruby 连接
👋 欢迎来到 Stackhero 文档!
Stackhero 提供即开即用的 Redis cloud 解决方案,带来多项优势,包括:
- 集成
Redis Commander网页界面。- 无限制的消息大小与传输。
- 只需一键即可轻松完成更新。
- 依托专属私有基础设施,实现卓越性能与强大安全性。
节省时间,简化您的工作流程:只需 5 分钟即可体验 Stackhero 的 Redis cloud hosting 方案!
Redis(全称为 Remote Dictionary Server)是一款开源的内存型数据库,具备卓越的性能和灵活性。
Redis 通常被归类为 NoSQL 数据库,支持多种数据结构,例如字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)以及有序集合(sorted sets)等。凭借其高速操作能力和对大数据量的处理能力,Redis 已成为缓存、实时分析、消息传递等多种场景的热门选择。
Redis 可以无缝集成到 Ruby 和 Ruby on Rails 项目中,以提升性能、可扩展性和灵活性。通过利用 Redis,Ruby 开发者能够实现如缓存、会话管理、实时数据处理、后台任务处理等多种功能。
以下是 Redis 与 Ruby 及 Ruby on Rails 常见的集成方式:
- 缓存(Caching):在 Rails 应用中,Redis 可作为缓存存储,加快响应速度并减轻数据库负载。
- 后台任务处理(Background job processing):Redis 可作为 Sidekiq 和 Resque 等主流后台任务处理库的后端,提升 Rails 应用中后台任务的性能和可靠性。
- 实时功能(Real-time features):借助 Redis 的 Pub/Sub 功能,Rails 应用可以实现实时通知、聊天系统、实时分析等功能,支持应用各组件间高效快速的信息传递。
Stackhero 提供即开即用的 Ruby cloud 解决方案,带来多项优势,包括:
- 通过简单的
git push,几秒钟内部署您的应用。- 使用您自己的域名,并享受 自动 配置 HTTPS 证书带来的安全保障。
- 享受 自动备份、一键更新,以及简单、透明、可预测的定价,让您无后顾之忧。
- 得益于 专属私有基础设施,获得最佳的 性能 和强大的 安全性。
节省时间,简化流程:只需 5 分钟,即可体验 Stackhero 的 Ruby cloud hosting 解决方案。
配置 Redis 作为 Ruby on Rails 的缓存系统
首先,您可以安装 "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 文档。
配置 Redis 与 Sidekiq 集成
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 的信息,请参阅 官方文档。
配置 Redis 与 Resque 集成
Resque 会自动使用环境变量 REDIS_URL 中定义的 Redis 服务器。
您可以如下设置 REDIS_URL 环境变量,将 <yourPassword> 和 <XXXXXX> 替换为您的信息:
REDIS_URL="rediss://default:<yourPassword>@<XXXXXX>.stackhero-network.com:<PORT_TLS>"
如需了解更多关于 Resque 与 Redis 的信息,请参阅 官方文档。