我目前正在开发一个在线实时游戏,它使用一个全局字典来存储所有游戏室。如果用户试图进入游戏,脚本将检查字典以查找空房间。如果未找到空房间,则会将新房间对象添加到字典中,以便其他登录用户可以进入游戏室。
问题是,使用全局字典来完成这样的任务不是一个好主意,正如这些问题所指出的:全局变量在烧瓶中是安全的吗?如何在请求之间共享数据?在烧瓶应用程序中保存全局状态
在回答中,建议将请求共享数据存储在数据库或memcached中。。如果我想用数据库的方式来做,我是否应该在每次请求时都将整个dict存储在数据库中?有没有更好更安全的方法?
我是不是应该每次请求都把整个判决存入数据库
如果使用数据库(如SQLite),则整个判决应该已经在数据库中。然后,您可以在需要有关游戏室的信息时查询数据库。不要将包含共享数据的整个判决书保存在内存中,将所有共享数据移动到数据库中,从内存中删除包含共享数据的判决书,在需要共享数据时查询数据库,并在共享数据更改时更新数据库。
我建议你试试。我想你会发现数据库足够快(和安全)。
请注意,数据库还具有可以使用和依赖的ACID属性。这些ACID属性的值目前可能还不清楚,但这可能会随着数据库的使用而改变。