CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
数据存储

【数据存储】开服预热:热门数据的提前装载

2026-09-21 19:46 作者:996 技术组 数据存储

实战应用:用在哪里

开门的第一分钟是缓存的冰点:全部玩家的第一次背包查询、第一次排行查询全部打穿到数据库,冷缓存的数据库在洪峰面前最早跪下。开服预热把热门数据在开门前装载进缓存,第一波请求打在热缓存上。

预热的清单

lua

---开服预热:热门数据的装载
setontimerex(97, 0)
function Warmup.run()
    local jobs = {
        { name = "排行榜",   fn = Warmup.ranks },
        { name = "商店货架", fn = Warmup.shops },
        { name = "传送点",   fn = Warmup.waypoints },
        { name = "预创角",   fn = Warmup.preRoles },
    }
    for _, job in ipairs(jobs) do
        local ok, err = pcall(job.fn)
        Ops.log(("预热[%s] %s"):format(
            job.name, ok and "完成" or "失败:" .. tostring(err)))
    end
end

---排行榜的预热:开门前的首屏数据
function Warmup.ranks()
    Cache.put("rank_level", DB.query(
        "SELECT name, level FROM roles " ..
        "ORDER BY level DESC LIMIT 50"))
end

预热的清单四件套:排行榜的首屏(开门后第一个被点开的界面)、商店的货架(新手买药的高频)、传送点的配置(满地图的传送查询)、预创角的名册(开门的准入校验)。装载走 pcall 的隔离:一项的失败不拖累其余,失败的名目进日志由人工补载。预热的时机在开门前的 5 分钟:太早装载的数据会被开门前的临期变更作废,太晚来不及完成。

预热的校验

lua

---预热的校验:缓存命中率的开门验证
function Warmup.verify()
    -- 模拟开门的首波查询,验证命中
    local hit = 0
    local total = 0
    for _, q in ipairs(Warmup.probeQueries()) do
        total = total + 1
        if Cache.get(q) then hit = hit + 1 end
    end
    local rate = hit / total
    Ops.log(("预热命中率 %.0f%%"):format(rate * 100))
    return rate >= 0.9
end

预热的校验用探针查询模拟开门的首波:热门的键逐个探一遍,命中率 90% 以上才放行开门——冷缓存的敞口在开门前量化,不达标即补载重验。预热的清单随版本演进:新玩法的首屏数据进清单,清单的维护与界面的热度数据联动(界面打开率的前十名就是预热的后备名单)。缓存的过期与预热错峰:预热的缓存设较长的新鲜期,开门的半小时内不做过期淘汰,缓存的策略在开门窗口期单独放宽。

验证与监控

开门首分钟的数据库查询量与历史的对照,预热生效的标志是查询量降一个数量级;缓存的命中率分钟级曲线,冷启动的爬坡期被预热压缩到接近零。

踩坑记录

预热曾经只装了数据没建索引,缓存的对象结构在首查时才初始化,预热的完整性包含结构。预热的时机曾经太早,开门前的紧急配置变更让缓存与配置不一致,预热挪到配置冻结之后。探针的清单曾经与真实查询脱节,验证的命中率虚高,探针从真实的埋点导出。

上线要点

预热的清单与界面的热度数据联动,清单的迭代有数据依据。预热任务的失败不阻断开门,失败项的补载有人工的通道。开门后的前 5 分钟数据库的查询量进开服复盘,预热的效果用数字归档。

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

玩法策划答题行会

【玩法策划】行会篝火答题:行会社交活动的答题玩法设计

实战应用:用在哪里 行会活动集中在攻城战,日常缺乏轻量社交场景。行会篝火答题做行会固定社交活动:每周三、周日晚在行会驻地点燃…

2026-09-23 05:48 996 技术组
玩法策划答题科举

【玩法策划】科举答题:全服答题与殿试排名的玩法设计

实战应用:用在哪里 全服答题活动办过几期,参与的人不少但黏性不足,答完就散。科举答题把答题做成两段式:每天晚八点的乡试答题筛…

2026-09-23 05:48 996 技术组
界面UI短语栏聊天

【界面UI】快捷短语栏:战斗场景的快捷消息发送栏实现

n n n 实战应用:用在哪里 n战斗中打字沟通慢且危险,队伍协作靠喊话效率太低。快捷短语栏在屏幕底部提供八条可自定义的战斗…

2026-09-23 05:48 996 技术组
引擎触发宝箱龙脉

【引擎触发】龙脉宝箱:整点宝箱刷新与开启奖励的触发设计

n n n 实战应用:用在哪里 n龙脉区域的野外宝箱是散人玩家的每日福利:每逢整点在龙脉区域随机刷新十五个宝箱,分三档给不同…

2026-09-23 05:48 996 技术组
网络通信有序性包序

【网络通信】消息有序性:同一玩家的包序保证

实战应用:用在哪里 同一玩家的两条消息走了不同的处理路径,先发的后到,装备穿上的消息比脱下的消息晚处理,面板状态错乱。消息有…

2026-09-23 05:48 996 技术组
运维发布日志采样

【运维发布】日志采样:高流量日志的采样降耗设计

实战应用:用在哪里 战斗日志全量打印,一天写满一块硬盘,翻日志像大海捞针。日志采样按类别分策略:错误日志全量保留、行为日志按…

2026-09-23 05:48 996 技术组