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 已成為快取(caching)、即時分析(real-time analytics)、訊息傳遞(messaging)及其他多種應用場景的熱門選擇。

Redis 可以無縫整合至 Ruby 及 Ruby on Rails,進一步提升效能、擴展性及靈活性。Ruby 開發人員可透過 Redis 實現多種功能,例如快取、Session 管理、即時資料處理及背景工作處理等。

以下是 Redis 與 Ruby 及 Ruby on Rails 常見的整合方式:

  1. 快取(Caching):Redis 可作為 Rails 應用程式的快取儲存,提升回應速度並減輕資料庫負載。
  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 client 設定:

# 檔案 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) # 每 0.5 秒重試一次,最多 240 次(共 120 秒/2 分鐘),之後才會拋出錯誤
  }
end

此設定可確保當 Redis 伺服器暫時無法連線時,client 會在 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 的資訊,請參閱 官方文件