Valkey: Rubyでの利用方法

RubyでValkeyに接続する方法

👋 Stackhero ドキュメントへようこそ!

Stackhero では、すぐにご利用いただける Valkey cloud ソリューションをご提供しています。主な特長は以下の通りです:

  • Redis Commander Web UI を標準搭載。
  • メッセージサイズや転送が無制限
  • ワンクリックで簡単にアップデート可能。
  • プライベートかつ専用インフラによる最適なパフォーマンスと強固なセキュリティ

時間を節約し、運用をシンプルに:Stackhero の Valkey cloud hosting ソリューションは、わずか5分でお試しいただけます!

Valkeyは、卓越したパフォーマンスと柔軟性を実現するために設計されたオープンソースのインメモリデータベースです。Redisがより制限のあるライセンスに移行した後にフォークされたValkeyは、完全なオープンソースの代替手段を提供します。Redisライブラリとの高い互換性を持ち、従来Redisに依存していたプロジェクトにとって優れたドロップインリプレースメントとなります。

一般的にNoSQLデータベースと呼ばれるValkeyは、文字列(strings)、ハッシュ(hashes)、リスト(lists)、セット(sets)、ソート済みセット(sorted sets)など、幅広いデータ構造をサポートしています。高速な操作性と大量データの処理能力により、キャッシュ、リアルタイム分析、メッセージングなどの用途で広く利用されています。

ValkeyはRubyおよびRuby on Railsとシームレスに統合でき、パフォーマンス、スケーラビリティ、柔軟性を向上させます。Ruby開発者はValkeyを活用して、キャッシュ、セッション管理、リアルタイムデータ処理、バックグラウンドジョブ管理などの機能を実装できます。

RubyおよびRuby on RailsでValkeyがよく利用される方法をいくつかご紹介します:

  1. キャッシュ: ValkeyはRailsアプリケーションのキャッシュレイヤーとして利用でき、レスポンスタイムの短縮やデータベース負荷の軽減に貢献します。

  2. バックグラウンドジョブ処理: Valkeyは、SidekiqやResqueなどの人気のバックグラウンドジョブ処理ライブラリのバックエンドとして動作し、Railsアプリケーションのバックグラウンドタスクのパフォーマンスと信頼性を向上させます。

  3. リアルタイム機能: ValkeyのPub/Sub機能により、Railsアプリケーションで通知、チャットシステム、リアルタイム分析などのリアルタイム機能を実現できます。アプリケーションコンポーネント間の高速かつ効率的なメッセージパッシングを可能にします。

Stackheroは、すぐに使えるRubyクラウドソリューションを提供しており、以下のような多くのメリットがあります:

  • シンプルなgit pushでアプリケーションを数秒でデプロイできます。
  • 独自ドメイン名を利用でき、HTTPS証明書自動設定による高いセキュリティを実現します。
  • 自動バックアップワンクリックアップデート、シンプルで透明性のある予測可能な料金体系で安心してご利用いただけます。
  • プライベートかつ専用インフラによる最適なパフォーマンスと堅牢なセキュリティを実現します。

時間を節約し、運用をシンプルに:StackheroのRubyクラウドホスティングソリューションは5分でお試しいただけます

Ruby on RailsでValkeyをキャッシュシステムとして設定するには、以下の手順に従ってください:

  1. redis gemをインストールします:
bundle add redis
  1. config/environments/production.rbファイルを編集し、次の設定を追加します:
config.cache_store = :redis_cache_store, { url: ENV['VALKEY_URL'] }
  1. 環境変数VALKEY_URLを定義します。<yourPassword><XXXXXX>をご自身の認証情報に置き換えて、以下の形式のURLを使用してください:
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クライアントの設定を変更し、安定性を高めることを推奨します:

# ファイル 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

この設定により、Valkeyサーバーが利用できなくなった場合でも、クライアントは2分間再接続を試みてからエラーを報告します。たとえばValkeyサーバーの再起動時などに猶予を持たせることができます。Sidekiqの利用状況に応じて、この設定値は適宜調整してください。

SidekiqとValkeyの詳細については、公式ドキュメントもご参照ください。

ResqueでValkeyを利用するには、環境変数REDIS_URLを以下のように設定してください。<yourPassword><XXXXXX>をご自身の認証情報に置き換えてください:

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

Resqueは、REDIS_URL環境変数で指定されたValkeyサーバーを自動的に利用します。

ResqueとValkeyの利用方法については、Resqueドキュメントもご参照ください。