关于 solid-cache-coder
用于配置和维护 Solid Cache 的技能,面向 Rails 开发者,涵盖数据库设置、缓存选项、性能调优与维护。
主要功能
- 01配置独立缓存数据库
- 02设置缓存过期与键设计
- 03配置 ZSTD 压缩
- 04执行批量缓存操作
- 05规划数据库维护
适用场景
- 01在 Rails 应用中配置 Solid Cache
- 02调整缓存存储与过期策略
- 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 时,请提供:
- 数据库设置 - 多数据库配置
- 缓存配置 - 存储选项和过期时间
- 性能 - 压缩和连接池设置
- 维护 - 清理任务和计划
评论
支持 Markdown