Valkey: 与 Ruby 配合使用

如何将 Valkey 与 Ruby 连接

👋 欢迎查阅 Stackhero 文档!

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

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

节省时间简化您的工作流程:只需 5 分钟,即可体验 Stackhero 的 Valkey cloud hosting 解决方案!

Valkey 是一个开源的内存数据库,专为卓越的性能和灵活性而设计。Valkey 源自 Redis 的分支,Redis 采用更严格的许可协议后,Valkey 提供了一个完全开源的替代方案。它与 Redis 库高度兼容,非常适合作为之前依赖 Redis 项目的无缝替换。

Valkey 通常被称为 NoSQL 数据库,支持多种数据结构,如字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(sorted set)等。凭借其高速操作能力和对大数据量的处理能力,Valkey 已成为缓存、实时分析、消息传递等场景的热门选择。

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

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

  1. 缓存(Caching):Valkey 可作为 Rails 应用的缓存层,加快响应速度,减轻数据库负载。

  2. 后台任务处理(Background job processing):Valkey 可作为 Sidekiq、Resque 等主流后台任务处理库的后端,提升 Rails 应用中后台任务的性能和可靠性。

  3. 实时功能(Real-time features):Valkey 的 Pub/Sub 功能让 Rails 应用能够实现实时通知、聊天系统、实时分析等功能,通过高效的消息传递机制连接应用各组件。

Stackhero 提供了即开即用的 Ruby 云服务 方案,带来诸多优势,包括:

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

节省时间,简化运维:只需5 分钟即可体验 Stackhero 的 Ruby 云主机 方案!

要将 Valkey 配置为 Ruby on Rails 的缓存系统,请按照以下步骤操作:

  1. 安装 redis gem:
bundle add redis
  1. 编辑 config/environments/production.rb 文件,添加如下配置:
config.cache_store = :redis_cache_store, { url: ENV['VALKEY_URL'] }
  1. 定义环境变量 VALKEY_URL。请使用如下格式的 URL,并将 <yourPassword><XXXXXX> 替换为您的凭据:
VALKEY_URL="rediss://default:<yourPassword>@<XXXXXX>.stackhero-network.com:<PORT_TLS>"

如需了解更多关于将 Valkey 配置为 Ruby on Rails 缓存系统的细节,建议参考 官方 Rails 文档

Sidekiq 会自动使用由环境变量 REDIS_URL 指定的 Valkey 服务器。

您可以如下设置环境变量 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

该配置确保当 Valkey 服务器不可用时,客户端会在 2 分钟内持续重试,之后才会报错。这为 Valkey 服务器重启等操作预留了缓冲时间。您可根据实际 Sidekiq 使用场景,调整该参数以满足具体需求。

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

要将 Valkey 与 Resque 配合使用,请设置环境变量 REDIS_URL,将 <yourPassword><XXXXXX> 替换为您的凭据:

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

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

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