在Objectify中,我可以使用@Cache注释一个实体将其写入memcache。如果我想忽略某些属性写入数据存储区,我可以用@Ignore注释它们。
换句话说,我希望能够拥有属性,这些属性仅保留到memcache,而不是数据存储。如果从memcache中检索实体,我会填充这些属性,否则它们是空的。
同时,我希望能够将实体仅保存到内存缓存,而不是数据存储。
为什么这有意义?有时我会拥有属性,这是我在用户上线时只需要的属性,如果缺少这些属性则无关紧要。例如,假设我有一个不经常写的用户实体,但经常被阅读(例如,社交网络中的朋友的状态),我想跟踪每个用户的存在,其中存在值每次改变时用户在我的应用中导航。能够将用户存储到其当前存在指示符已连接的memcache是很好的,因此在检索它时,客户端会接收该实体及其持久值和任何可用的缓存信息。如果我可以控制.save(onlyCache)告诉Objectify我是想将实体保存到memcache还是一直保存到数据存储区,我可以微调我想要看到的内容以及什么不是。
在Objectify中存在类似的东西和/或它是否可行?使用这种方法可以看到任何缺点吗?
答案 0 :(得分:2)
未持久保存到数据库的属性可能不属于该实体。您提到的运行时属性可以分别使用MemcacheService(https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/memcache/MemcacheService)保存到memcache。这不会使你的代码混乱(有太多的注释,@ Immore,@ CacheOnly等)并保持架构清洁。