【发布时间】:2016-05-06 11:47:17
【问题描述】:
我们的 Google AppEngine Java 应用程序涉及缓存从服务器请求信息的最近用户。
当前可行的解决方案是我们将用户信息存储在一个列表中,然后将其缓存。
当我们需要最近的用户时,我们只需从该列表中获取一个。
最近用户的列表对我们的应用程序运行并不重要,如果它从缓存中删除,它只是随着用户继续从服务器请求而重建。
我想知道的是:我能以更好的方式做到这一点吗?
使用当前的方法,我们只能存储一定数量的用户,然后列表变大以供 memcache 使用(我们目前将列表限制为 1000,并在插入新的时删除最旧的用户)。此外,列表将需要非常快速地更新,这涉及从 memcache 中检索完整列表以添加单个用户。
将每个用户分别存储在缓存中对我们有利,因为我们要求最近的用户在 30 分钟后过期。目前这是一项手动任务,我们会确保列表中不包含过期用户。
这种情况的最佳方法是什么?如果将用户单独存储在缓存中,那么跟踪用户以便我们检索它的最佳方法是什么?
【问题讨论】:
-
用户信息很基础,目前连实体都没有。该列表是一个简单的 hashmap 列表,其中一个 hashmap 代表一个用户。 hashmap 包含用户性别、语言、插入时间戳和用户 iOS 推送通知标识符是否存在。
-
HashMap 听起来像是错误的数据类型。 HashMap 只对大量的键值对有效。我只会在内存缓存中存储一个“用户”实体。
标签: google-app-engine caching memcached