Rails 8 新特性全解析
Rails 8 新特性全解析Solid Queue / Cache / Cable抛弃 Redis 方案实战——当 Rails 决定替你砍掉整个 Redis 依赖这不是噱头是一场架构范式的革命。‌一、为什么 Rails 8 要干掉 Redis先说一句得罪人的话‌Redis 很强但 95% 的应用根本用不到它的极限性能却要为它付出全部的运维代价。‌你要维护 Redis server要配置 persistence要监控内存要搭建 HA 高可用集群还要理解两套完全不同的数据存储语义。对小团队来说这不是技术选型这是技术负担。David Heinemeier Hansson 在 Rails World 上的那句话至今振聋发聩Rails 8 的想法是摆脱趋势跟踪拒绝一些行业中流行的想法——比如不敢碰 Linux 服务器或者非要给自己的应用塞一个 Redis。于是Rails 8 带来了三把刀‌Solid Queue、Solid Cache、Solid Cable‌——全部基于数据库驱动全部零额外依赖。Redis可以退场了。二、Solid Queue用 PostgreSQL 取代 Sidekiq Redis2.1 核心原理FOR UPDATE SKIP LOCKEDSolid Queue 的技术内核极其优雅。它利用 PostgreSQL 9.5 引入的 FOR UPDATE SKIP LOCKED 语句让多个 Worker 在竞争同一批 Job 时互不阻塞——完美模拟了 Redis 那种高速、原子性的任务锁定行为而无需任何外部服务。数据只存三张表表格表名 用途solid_queue_jobs 所有 Job 的元数据solid_queue_scheduled_executions 排程中的 Jobsolid_queue_ready_executions 可立即执行的 Job配合 PostgreSQL 的 MVCC 机制大量 insert/delete 被 autovacuum 自动消化‌你甚至不需要调优‌。2.2 实战从零搭建新建 Rails 8 项目自动集成‌bashrails new myapp# Solid Queue 已是默认后端无需任何配置已有项目升级‌ruby# Gemfilegem solid_queuebashbin/rails generate solid_queue:installbin/rails db:migrate核心配置 config/queue.yml‌yamlproduction:dispatchers: 2workers:- queues: [critical]concurrency: 10- queues: [default, mailers]concurrency: 5scheduler:dynamic_tasks_enabled: true # 运行时动态增删定时任务启动‌bashbin/jobs start # Fork 模式默认最佳性能bin/jobs start --mode async # Async 模式单进程多线程省资源bin/jobs start --skip-recurring # 开发环境跳过定时任务2.3 杀手级功能动态任务调度这是 Sidekiq Enterprise 才有的付费功能Solid Queue 免费送ruby# 运行时添加定时任务SolidQueue::RecurringTask.create(job_class: DailyReportJob,cron_expression: 0 0 * * *,queue_name: reports)# 运行时移除task SolidQueue::RecurringTask.find_by(job_class: DailyReportJob)task.destroy2.4 对比 Sidekiq Redis一张表看清差距表格维度 Sidekiq Redis Solid Queue吞吐模型 多线程但 Redis 是单点瓶颈 数据库原生 MVCC内存占用200 QPS ~1GB12 Worker ~320MB4 Worker月账单AWS t3.medium ~$84 ~$42监控 UI ✅ 自带 Web UI ✅ Mission Control免费替代 Sidekiq Dashboard故障转移 Redis 主从切换有窗口期 实测 12 秒内完成37 个任务零丢失自动续跑并发控制 ❌ 付费功能 ✅ 免费内建外部依赖 必须 Redis 无需任何额外服务但请注意‌ Solid Queue 要求 Redis 配置为单节点或主从模式不支持 Redis Cluster因为它的原子操作依赖 Lua 脚本在单个 Redis 实例上执行。如果你已在用 Redis Cluster要么拆出专用实例要么接受部分高级功能降级。三、Solid Cable用数据库取代 Redis 做 WebSocketAction Cable 终于不再被 Redis 绑架了。Solid Cable 的工作方式‌ 消息存入数据库表通过轮询机制检查更新。虽然是轮询但在大多数场景下性能与 Redis 相当且‌不受 PostgreSQL 适配器 8KB 消息负载限制‌。yaml# config/cable.ymlproduction:polling_interval: 0.1message_retention: 1.hourautotrim: true兼容 MySQL、SQLite、PostgreSQL。如果你的应用本来就不需要 RedisSolid Cable 让你彻底摆脱对它的依赖。四、Solid Cache磁盘缓存取代内存缓存Redis 和 Memcached 的替代品来了。Solid Cache 利用磁盘存储提供更大的数据集‌不受内存限制加密支持‌保留策略Retention Policy‌更低的成本‌磁盘比内存便宜一个数量级对于缓存 HTML 片段、API 响应这类场景Solid Cache 是降维打击。五、AI 后台任务实战Solid Queue 优先级队列 智能重试当你的 Rails 应用接入 AIGPT、Embedding 等传统的作业管理思维会彻底失效。AI 任务‌慢、贵、受限、易失败‌必须用专门的模式来治理。5.1 优先级队列设计ruby# app/jobs/ai_chat_job.rbclass AiChatJob ApplicationJobqueue_as :ai_realtime # 实时交互毫秒级响应def perform(conversation_id, message)# 调用 AI 聊天 APIendend# app/jobs/batch_embedding_job.rbclass BatchEmbeddingJob ApplicationJobqueue_as :embeddings # 批量向量化可延迟一整夜def perform(document_ids)# 批量生成向量endend5.2 分级调度配置yaml# config/solid_queue.ymlproduction:dispatchers:- polling_interval: 1batch_size: 500workers:- queues: [ai_realtime]threads: 3polling_interval: 0.1 # 0.1秒检查一次极快响应- queues: [critical, default]threads: 3polling_interval: 0.5- queues: [ai_batch, embeddings]threads: 2polling_interval: 2 # 2秒检查一次节省数据库压力关键认知‌ polling_interval 是最容易被忽视但最致命的参数。每个 Worker 线程都按这个间隔查询数据库间隔越短、队列越多数据库压力越大。务必根据实际负载调优。5.3 智能重试指数退避 抖动AI 任务最常见的失败原因是‌速率限制HTTP 429‌和‌超时‌。固定间隔重试等于对已受限的 API 发起 DDoS 攻击。ruby# app/jobs/concerns/ai_base_job.rbmodule AiBaseJobextend ActiveSupport::Concernincluded do# 速率限制重试5次多项式退避 抖动retry_on Faraday::TooManyRequestsError,wait: :polynomially_longer,attempts: 5# 网络超时重试3次多项式退避retry_on Faraday::TimeoutError,wait: :polynomially_longer,attempts: 3# AI 通用错误固定等待10秒最多3次retry_on OpenAI::Error,wait: 10.seconds,attempts: 3# 记录不存在直接丢弃不重试discard_on ActiveRecord::RecordNotFoundendend六、Rails 8 部署革命Kamal 2别忘了Rails 8 还带来了 ‌Kamal 2‌——一行命令完成生产部署bashkamal setup # 两分钟内配置好生产服务器kamal deploy # 零停机部署内置 ‌Thruster‌ 代理不再需要 NginxKamal Proxy‌ 取代 Traefik支持 Lets Encrypt 自动 SSL集成 1Password / Bitwarden 管理密码Docker 容器开箱即互联网就绪七、灵魂拷问你真的需要 Redis 吗表格场景 推荐方案日均 100 万 JobPostgreSQL 够用 ‌Solid Queue‌零额外依赖日均 1000 万 Job极致吞吐需求 ‌Sidekiq Redis‌依然是王者不需要 Redis 做其他事 ‌Solid Cable Solid Cache‌全栈数据库驱动小型项目 / 独立开发者 ‌SQLite 后端‌Rails 8 官方支持部署成本趋近于零结语Rails 8 的三大 Solid不是要挑战 Redis 的性能极限——‌它是在问你一个更务实的问题你真的需要 Redis 吗‌对 99% 的应用来说把整套基础设施收敛到 PostgreSQL是 2026 年最合理的架构选择。能用数据库解决的事情就不要再引入一个新服务。这不仅是技术简化更是思维简化。正如那篇引爆社区的文章所说开发者太常在堆功能而不是解决问题。Redis 是强但大多数时候我们根本用不到它的极限而却要为它付上运维成本、部署复杂度与系统风险。把 Redis 留给真正需要它的 1%其余的——交给 Solid Queue 就够了。‌

相关新闻

HGDB索引膨胀的检查与处理思路

HGDB索引膨胀的检查与处理思路

文章目录环境文档用途详细信息环境 系统平台:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5.8 文档用途 本文档主要介绍HGDB索引膨胀的定义、产生的原因、如何检查以及遇到索引膨胀如何处理(包括预防和解决) 详细信息 索…

2026/6/27 6:34:37阅读更多 →
管理立校 质量兴校

管理立校 质量兴校

管理立校 质量兴校--邯郸市文侯中等职业学校稳步发展,成为河北省职教新标杆当前,2026年邯郸中职招生工作全面开启,邯郸市文侯中等职业学校报名现场人气爆棚,前来咨询报名的家长与学生络绎不绝。作为一所民办中职学校,自…

2026/6/27 6:34:37阅读更多 →
2026深度实测|Work模式与Composer Vibe Coding迭代对比,中文开发选型指南

2026深度实测|Work模式与Composer Vibe Coding迭代对比,中文开发选型指南

作为一个写代码喜欢边听播客边写的人,AI 编程工具的自动补全频率很关键——太频繁会打断我听播客的节奏。我长期使用口述需求驱动编码、AI自主迭代修正的vibe coding开发模式,日常高频开发Spring Boot后端CRUD接口、迭代社区论坛业务功能,对工…

2026/6/27 6:29:37阅读更多 →
世界模型VERA 技术解析

世界模型VERA 技术解析

世界模型VERA 技术解析 基于 https://github.com/sizhe-li/VERA 的代码阅读与讨论整理 1. 整体架构 VERA(Video-to-Embodied Robot Action)是一个两阶段闭环机器人策略: 当前观测帧↓ [视频规划器] → 预测未来帧序列("做梦")↓ [Jacobian IDM] → 将未来帧转…

2026/6/27 7:49:41阅读更多 →
Havenlon 内容阅读入口:从执行控制、证据链到物理信任边界

Havenlon 内容阅读入口:从执行控制、证据链到物理信任边界

这篇文章是我对 Havenlon 系列内容的一个长期整理入口。 过去一段时间,我围绕 Havenlon 写了很多文章,内容涉及执行控制、最终执行权、共同治理、证据链、物理信任边界、AI Agent 执行安全、硬件签名设备和系统工程实现。 这些文章并不是彼此孤立的。它…

2026/6/27 7:49:41阅读更多 →
本地能跑,上线就崩:文件预览服务的五个隐蔽坑与排障实录

本地能跑,上线就崩:文件预览服务的五个隐蔽坑与排障实录

本期敖行客研发实战日记,邀请传奇后端人物——GGB,分享文件预览服务上线踩过的一堆阴间大坑,完整复盘生产环境 5 个藏到离谱的疑难 bug 排坑全过程。解决本地跑丝滑、一部署上线直接原地翻车的诡异问题,深挖病根同时附上落地解法。帮各位后端…

2026/6/27 7:49:41阅读更多 →
奇点算力观察|DeepSeek效应:低成本训练改写AI竞争逻辑

奇点算力观察|DeepSeek效应:低成本训练改写AI竞争逻辑

DeepSeek 的出现,让全球人工智能行业重新思考一个问题:大模型的发展,是否一定要依靠“堆算力、烧资金、拼规模”?过去几年,AI 行业普遍认为,模型越大、数据越多、GPU 集群越强,能力就越领先。因…

2026/6/27 7:49:41阅读更多 →
电动工具40V平台技术特性深度解析:性能、续航与生态优势

电动工具40V平台技术特性深度解析:性能、续航与生态优势

1. 引言:40V平台为何成为行业新宠? 在无绳电动工具领域,电池电压平台是决定产品性能、应用场景和用户体验的核心参数。从早期的12V、18V/20V平台,到如今日益普及的40V平台,每一次电压升级都标志着技术的一次飞跃。40V平…

2026/6/27 7:49:41阅读更多 →
1900 · 基因相似度(同向双指针)

1900 · 基因相似度(同向双指针)

链接:https://www.lintcode.com/problem/1900/description 题解:https://www.lintcode.com/problem/1900/solution/34926 class Solution { public:/*** param gene1: a string* param gene2: a string* return: return the similarity of two gene fr…

2026/6/27 7:44:41阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/26 11:03:22阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/27 5:46:02阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/26 9:29:01阅读更多 →
10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声&#xff1a;Retrieval-based-Voice-Conversion-WebUI完整指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrie…

2026/6/27 0:04:03阅读更多 →
Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider&#xff1a;3分钟AI智能分层&#xff0c;彻底告别手动抠图时代 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 还在为复杂的图像分层工作烦…

2026/6/27 0:04:03阅读更多 →
Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

1. 项目概述&#xff1a;为什么X-Frame-Options是Web安全的“防盗门”&#xff1f;最近在排查一个老项目的安全审计报告时&#xff0c;又被提到了“点击劫持”风险&#xff0c;矛头直指缺失的X-Frame-Options响应头。这已经不是第一次了&#xff0c;很多开发团队&#xff0c;尤…

2026/6/27 0:04:03阅读更多 →