2

我构建了一个服务器-客户端 android 应用程序,其中用户注册到服务器,每个用户配置文件都保存在数据库和我保存在应用程序会话中的集合池中。

我在会话中保存所有现有用户的原因是用户经常更新其他用户。并从谷歌应用引擎数据存储中读取,这通常会花费我很多。

这在第一个月运行良好,但今天我的会话中有 1000 个配置文件,事情开始变得糟糕。突然间,配置文件的集合变为空,我不得不“重新启动”服务器以使配置文件再次加载到会话中。

我想我在会话中保存所有配置文件的设计是错误的。我对吗?或其他可能导致空集合?

有什么设计模式可以用来做正确的事情吗?

4

1 回答 1

0

我不知道会话的内部结构以及如何在 GAE 中很好地处理它们,但我的第一个猜测是会话变得太大并且无法在请求之间正确序列化。

我的建议是使用 MemCache 来存储用户列表。一个典型的模式是将您需要的表存储在数据库中(这将包括您提到的每个用户的连接池)。然后,在第一次创建会话时或当您真正需要它时,将数据库中的数据加载到 MemCache 中。

缓存后,您可以直接使用它,而无需额外的数据库查询。如果做得对,这是非常强大的,也不应该给你带来性能问题。请记住,系统可以随机清除 MemCache,因此如果 MemCache 尚未初始化或重置,您需要确保从数据库加载它。

于 2012-10-16T21:56:08.783 回答