java - 在应用程序引擎 Memcache (java) 中存储不太重要的复杂数据结构以进行 session 间交互的示例

标签 java google-app-engine data-structures memcached

不那么关键的数据可以存储在内存缓存中。然而,复杂的数据如何存储在那里,同时由不同的用户 session 同时更新。

说一个图、树还是链表?错过一个节点是可以的,但如果一个节点被逐出,则丢失整个图/树/列表是很糟糕的。这里的一个例子是在在线用户之间发送用户更新通知。

App Engine 的 appstats 使用预定的 1000 个存储桶,这很好(我认为它们之间没有依赖性)。但我正在考虑更复杂的情况......

任何教程、示例或理论都会被认为有帮助......

(添加了 Memcached 标签,但我知道它不适用于应用程序引擎)

最佳答案

如果要存储更复杂的数据,则需要在将其放入共享内存之前对其进行序列化。

当您想要更新此数据时,您需要反序列化回复杂结构,更新结构,然后再次序列化以将结构放回到共享内存中。

我很好奇 - 为什么是内存缓存?还有许多其他共享内存存储系统,例如 MemBase、Redis 和 Hazelcast,Hazelcast 添加了一些帮助来隐藏存储一些更复杂的结构(如列表和映射)的复杂性。 Hazelcast 还添加了一些不错的功能,例如集群范围的锁和数据监听器,这些功能非常有用(全面披露:我决定使用 Hazelcast)。

当然,如果你想花真钱购买许可,你总是可以使用 Terracotta,它可以完全让你摆脱这种复杂性。

关于java - 在应用程序引擎 Memcache (java) 中存储不太重要的复杂数据结构以进行 session 间交互的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8199309/

相关文章:

java - Cassandra key 缓存构建

python - Google App Engine - BadArgumentError - 不明白为什么

带有最后修改时间的Java集合数据结构

java - 用圆圈填充 Jbutton

java - H2 找不到适用于 jdbc 的驱动程序 :h2:mem:

google-app-engine - 是否可以在 Google App Engine 上从 VIP 更改为 SNI?

google-app-engine - 每个 Fetch、Count 和 Query 操作消耗了多少数据存储区读取?

c - 修改树的深度优先遍历

data-structures - 我应该在键落在一个范围内的地方使用什么数据结构?

java - 使用反射将字段值设置为 null