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

【数据存储】ini 文件的读写缓存:readinibycache 的策略

2026-09-21 11:35 作者:996 技术组 数据存储

实战应用:用在哪里

readinibycache 与 writeinibycache 是 ini 文件读写的缓存版本:首次读取加载到内存缓存,后续读取走缓存不再触碰磁盘,写入时同步更新缓存与延迟落盘。缓存的策略让高频读写的 ini 配置不再成为 IO 瓶颈。

读取与缓存

lua

---ini 的缓存读取
function readinibycache(actor, section, item)
    local key = actor:GetUserId() .. ":" .. section
    local cache = iniCache[key]
    if not cache then
        cache = readini(actor, section, item)
        iniCache[key] = cache
    end
    return cache[item]
end

首次读取从磁盘加载到内存缓存,后续读取走缓存。缓存的键按玩家加分区隔离,不同玩家的缓存互不干扰。缓存的上限按玩家数量控制,每个玩家的 ini 数据量小(几 KB),千人的总缓存在可接受范围。

写入与落盘

lua

---ini 的缓存写入
function writeinibycache(actor, section, item, value)
    local key = actor:GetUserId() .. ":" .. section
    local cache = iniCache[key]
    if not cache then
        cache = readini(actor, section, item) or {}
        iniCache[key] = cache
    end
    cache[item] = value
    dirtyIni[key] = true
end

写入先更新内存缓存再标记脏,脏标记的落盘由定时任务批量执行,写入的 IO 压力被摊平。脏标记的落盘频率:每 30 秒批量刷一次,突然宕机最多丢 30 秒的写入,可接受的丢失窗口。ini 的缓存在玩家下线时主动刷盘并释放,长期在线的玩家定时刷盘防堆积。

验证与监控

ini 缓存的命中率与脏标记数量监控,命中率低于八成说明缓存策略需要调整。

踩坑记录

缓存的写入曾经没有同步磁盘文件,宕机后丢失了整批的写入,脏标记的定时落盘解决。ini 的并发写入曾经出现文件锁冲突,同一文件的写入加互斥锁后消除。

上线要点

ini 缓存的封装对业务层透明:业务的读写接口不变,底层自动走缓存。ini 文件的清理任务配合缓存的生命周期,下线玩家的缓存释放与磁盘同步。ini 的格式版本化:引擎升级后 ini 格式变化要有转换脚本,老档的 ini 数据不丢失。

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

作者履历与出处

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

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

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

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

前端接口任务手册

【前端接口】主线任务回顾手册:重点回顾的界面实现

实战应用:用在哪里 三个月的主线剧情跨度太长,老玩家回坑记不住剧情走向。回顾手册把每个章节的关键节点做成时间线卡片:章节名、…

2026-09-22 17:15 996 技术组
网络通信热更差分

【网络通信】差分包分发:热更差分的下发设计

实战应用:用在哪里 每次全量更新包两百兆,玩家在流量下望而却步。差分分发只下发新旧版本的差异块:一兆的全量更新压成八十兆差分…

2026-09-22 17:15 996 技术组
运维发布灰度指标

【运维发布】灰度观察指标清单:新玩法的观察期指标设计

实战应用:用在哪里 新玩法灰度上线后“观察一下”是最模糊的指令。观察指标清单把观察期变成可执行的检查表:参与率、异常率、资源…

2026-09-22 17:15 996 技术组
案例复盘义卖审计

【案例复盘】流拍义卖审计:公益金流向的核查复盘

实战应用:用在哪里 行会义卖活动把流拍装备低价义卖,宣称收益全捐新手基金,活动结束后玩家质疑“钱去哪了”。复盘把公益金流向做…

2026-09-22 17:15 996 技术组
界面UI技能试算

【界面UI】技能升级试算面板:模拟试算的界面实现

实战应用:用在哪里 技能升级要消耗技能书与金币,升完才发现收益不如预期是常见的挫败。试算面板在升级前模拟展示升级后的属性变化…

2026-09-22 17:15 996 技术组
引擎触发道士群体治疗

【引擎触发】道士群体治疗:治疗量衰减的触发结算设计

实战应用:用在哪里 道士的群体治疗一次奶全队,无衰减的群体治疗会让治疗量溢出成无敌盾。治疗量衰减机制:每多一名目标,单体治疗…

2026-09-22 17:15 996 技术组