Skip to content

数据储存

AutoSave 提供了一种封装,方便开发者构建自动存盘的数据类

python
from ..framework.server import *
# 示例
@ServerDataStorage.AutoSave(version=1)
class GameConfig(object):
    max_players = 10
    game_time = 300
    difficulty = "normal"

# 读取配置
player_count = GameConfig.max_players  # 自动从存储加载

# 修改配置(自动保存)
GameConfig.game_time = 600  # 写入操作自动触发保存

# 手动保存所有数据
GameConfig.saveData()

模块行为

  • 版本控制:version是 int, 不得传入其他类型, 默认为1,当修改version为更大的数字,新版本将强制覆盖旧版本,旧数据(包括k和v)将被【丢弃】。
  • 储存时机:当自定义数据类(例如GameConfig)被加载,将从磁盘中读取数据。当任何值被修改,将立即存盘。
  • 缓存机制:维护一个 _cache ,全局共享(您在同一脚本目录下,任何地方import GameConfig并访问数据,都会访问同一个_cache,有缓存期间所有访问将先访问内存,如果命中就return)
  • key: 通过 _make_key 函数创建一个全局唯一的key,必要时可以引入更多标识符(如ModNameSpace/py模块路径 但不建议)以确保唯一性