Valkey: 與 Ruby 一起使用

如何將 Valkey 與 Ruby 連接

👋 歡迎來到 Stackhero 文件!

Stackhero 提供即用型的 Valkey cloud 方案,帶來多項優勢,包括:

  • 已包含 Redis Commander 網頁介面
  • 無限訊息大小及傳輸量。
  • 一鍵輕鬆完成更新
  • 專屬私有基礎設施提供最佳效能及強大安全性

節省時間簡化您的工作流程:只需 5 分鐘即可體驗 Stackhero 的 Valkey cloud hosting 方案!

Valkey 是一個開源、記憶體內運行的資料庫,專為卓越效能與靈活性而設計。Valkey 是從 Redis 分支出來的,原因是 Redis 採用了更嚴格的授權條款,因此 Valkey 提供了一個完全開源的替代方案。它與 Redis 的 library 完全兼容,非常適合用作過去依賴 Redis 的專案的直接替換方案。

Valkey 通常被歸類為 NoSQL 資料庫,支援多種資料結構,例如 string、hash、list、set 及 sorted set 等。憑藉高速操作及處理大量資料的能力,Valkey 已成為快取、即時分析、訊息傳遞等多種應用場景的熱門選擇。

Valkey 能夠輕鬆整合至 Ruby 及 Ruby on Rails,進一步提升效能、擴展性及靈活性。Ruby 開發人員可以利用 Valkey 實現快取、session 管理、即時資料處理及背景工作處理等功能。

以下是 Valkey 與 Ruby 及 Ruby on Rails 常見的應用方式:

  1. 快取 (Caching):Valkey 可作為 Rails 應用的快取層,加快回應速度並減輕資料庫負載。

  2. 背景工作處理 (Background job processing):Valkey 可作為 Sidekiq、Resque 等主流背景工作處理 library 的後端,提升 Rails 應用中背景任務的效能與可靠性。

  3. 即時功能 (Real-time features):Valkey 的 Pub/Sub 功能讓 Rails 應用能夠實現即時通知、聊天室、即時分析等功能,促進應用元件間快速高效的訊息傳遞。

Stackhero 提供現成的 Ruby cloud 解決方案,帶來多項優勢,包括:

  • 只需一個簡單的 git push,即可數秒內部署您的應用。
  • 使用您自己的網域名稱,並享有自動配置HTTPS 憑證,提升安全性。
  • 自動備份一鍵更新,以及簡單、透明、可預測的收費,讓您更安心。
  • 憑藉專屬私有基礎設施,獲得最佳效能與強大安全性

節省時間,簡化流程:只需 5 分鐘即可體驗 Stackhero 的 Ruby cloud hosting 方案!

如要將 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>"

如需更多有關在 Ruby on Rails 中設定 Valkey 作為快取系統的資訊,建議參考 官方 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 client 設定如下:

# 檔案 config/initializers/sidekiq.rb
Sidekiq.configure_client do |config|
  config.redis = {
    network_timeout: 5, # 設定 timeout 為 5 秒
    pool_timeout: 5, # 設定 timeout 為 5 秒
    reconnect_attempts: Array.new(240, 0.5) # 每 0.5 秒重試一次,共重試 240 次(即總共 120 秒/2 分鐘)才會拋出錯誤
  }
end

此設定可確保當您的 Valkey 伺服器暫時無法連線時,client 會在 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 文件