听起来像是错误的方式,因为您有丢失 memcache 数据的风险。
您可以每秒写入一个实体组一次。
您可以非常快速地编写单独的实体组。因此,这实际上取决于您如何构建数据。例如,如果您将整个聊天记录保存在一个实体中,则您每秒只能编写一次该聊天记录。而且您将被限制为 1MB。
您应该在聊天中为每条消息编写一个单独的实体,您可以非常非常快速地编写,但您需要设计一种方法将所有消息拉到一起,以便记录日志。
编辑我同意 Peter Knego 的观点,即每条消息使用一个实体的成本会变得太昂贵。他的后端建议也很不错,尽管如果您的应用程序很受欢迎,后端的扩展性就不会那么好。
我试图避免分片,但我认为这是必要的。如果您不熟悉分片,请阅读以下内容:https ://developers.google.com/appengine/articles/sharding_counters
分片将是为对话中的所有消息编写一个实体与每条消息一个实体之间的中间体。您将在多个实体之间随机拆分消息。例如,如果您将消息保存在 3 个实体中,则可以写入 5x/秒(我怀疑大多数人类对话会比这更快)。
在获取时,您需要抓取 3 个实体,并按时间顺序合并消息。这将为您节省很多成本。但是您需要编写代码来进行合并。
另一个好处是您的对话限制现在是 3MB 而不是 1MB。