mcpField
S
solid-cache-coder

solid-cache-coder

github.com/majesticlabs-dev開発5049 回インストール7 週間前に更新
リポジトリ

solid-cache-coder について

Rails 8 のデータベースベースのキャッシュストア、Solid Cache の設定と保守を支援するスキルです。データベース構成から性能調整、メンテナンスまで扱います。

主な機能

  1. 01キャッシュ用別データベースの設定
  2. 02有効期限とキー設計
  3. 03ZSTD 圧縮の設定
  4. 04キャッシュの一括操作
  5. 05データベース保守の案内

活用シーン

  1. 01Rails アプリで Solid Cache を導入
  2. 02キャッシュ保存と期限の調整
  3. 03キャッシュ清掃タスクの計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/majesticlabs-dev/majestic-marketplace --skill solid-cache-coder

インストール後、Claude Code で/solid-cache-coderを入力して読み込まれたか確認します。

詳細

Solid Cache コーダー

概要

Solid Cache は Rails 8 のデフォルトのキャッシュバックエンドです。RAM の代わりに NVMe ストレージを使用する、データベースベースのキャッシュストアです。FIFO による削除機能を備え、Redis/Memcached を不要にします。

設定

基本設定
# config/environments/production.rb
config.cache_store = :solid_cache_store
詳細設定
config.cache_store = :solid_cache_store, {
  database: :cache,
  expires_in: 2.weeks,
  size_estimate: 500.megabytes,
  namespace: Rails.env,
  compressor: ZSTDCompressor
}

データベースのセットアップ

キャッシュ専用データベース(推奨)
# config/database.yml
production:
  primary:
    <<: *default
    url: <%= ENV["DATABASE_URL"] %>
  cache:
    <<: *default
    url: <%= ENV["CACHE_DATABASE_URL"] %>
    migrations_paths: db/cache_migrate
マイグレーションを実行する
bin/rails solid_cache:install:migrations
bin/rails db:migrate

キャッシュキーの設計

階層型キー
Rails.cache.fetch("user:#{user.id}:profile:#{profile.id}") { expensive_computation }
Rails.cache.delete_matched("user:#{user.id}:*")  # Pattern-based deletion
ロシア人形キャッシュ
<% cache @post do %>
  <%= @post.body %>
  <% @post.comments.each do |comment| %>
    <% cache comment do %><%= render comment %><% end %>
  <% end %>
<% end %>

有効期限の戦略

# Per-entry expiration
Rails.cache.write("session:#{id}", data, expires_in: 30.minutes)

# Fetch with expiration
Rails.cache.fetch("expensive_query", expires_in: 15.minutes) { ExpensiveQuery.run }

パフォーマンスの調整

ZSTD 圧縮を有効にする
config.cache_store = :solid_cache_store, { compressor: ZSTDCompressor }
バッチ処理
keys = users.map { |u| "user:#{u.id}:preferences" }
results = Rails.cache.read_multi(*keys)

Rails.cache.fetch_multi(*keys) { |key| compute_value_for(key) }

データベースのメンテナンス

# lib/tasks/cache_maintenance.rake
namespace :cache do
  task vacuum: :environment do
    ActiveRecord::Base.connected_to(database: :cache) do
      ActiveRecord::Base.connection.execute("VACUUM ANALYZE solid_cache_entries")
    end
  end
end

Solid Cache と Redis の比較

Solid Cache を選ぶ場合Redis を選ぶ場合
インフラストラクチャを簡素化したい1 ミリ秒未満のレイテンシが重要
PostgreSQL/SQLite をプライマリとして使用している非常に大規模なキャッシュワーキングセットがある
単一サーバーまたは小規模クラスターを使用しているPub/Sub や複雑な無効化が必要
RAM キャッシュより NVMe を優先するすでに Redis を実行している

アンチパターン

アンチパターン問題解決策
大規模環境で単一のデータベースを使用するリソースの競合キャッシュ専用データベースを使用する
圧縮しないストレージの無駄ZSTD を有効にする
有効期限を設定しない無制限に増大する適切な max_age を設定する
メンテナンスを行わないテーブルの肥大化VACUUM をスケジュールする

出力形式

Solid Cache を設定する際は、以下を提示してください。

  1. データベースのセットアップ - マルチデータベース設定
  2. キャッシュ設定 - ストアのオプションと有効期限
  3. パフォーマンス - 圧縮とプールの設定
  4. メンテナンス - クリーンアップタスクとスケジュール

コメント