mcpField
S
solid-cache-coder

solid-cache-coder

github.com/majesticlabs-dev开发5049 次安装7 周前更新
代码仓库

关于 solid-cache-coder

用于配置和维护 Solid Cache 的技能,面向 Rails 开发者,涵盖数据库设置、缓存选项、性能调优与维护。

主要功能

  1. 01配置独立缓存数据库
  2. 02设置缓存过期与键设计
  3. 03配置 ZSTD 压缩
  4. 04执行批量缓存操作
  5. 05规划数据库维护

适用场景

  1. 01在 Rails 应用中配置 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 的默认缓存后端——一个使用 NVMe 存储而非 RAM 的数据库缓存存储。它采用 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 的情况
简化基础设施亚毫秒级延迟至关重要
将 PostgreSQL/SQLite 用作主数据库缓存工作集极大
单服务器或小型集群需要 pub/sub 或复杂的失效机制
更倾向于使用 NVMe 而非 RAM 缓存已在运行 Redis

反模式

反模式问题解决方案
高负载下使用单一数据库资源争用使用独立缓存数据库
不压缩浪费存储空间启用 ZSTD
永不过期无限增长设置合理的 max_age
不进行维护表膨胀安排 VACUUM

输出格式

配置 Solid Cache 时,请提供:

  1. 数据库设置 - 多数据库配置
  2. 缓存配置 - 存储选项和过期时间
  3. 性能 - 压缩和连接池设置
  4. 维护 - 清理任务和计划

评论

支持 Markdown