数据储存
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模块路径 但不建议)以确保唯一性