【发布时间】:2015-04-10 02:10:54
【问题描述】:
我使用 (String, Arraylist of String) 作为 gemfire 缓存中的键值对。是否有任何方法可以从值列表中添加或删除特定值而不获取整个列表并添加/删除和发布再列出来?!
【问题讨论】:
-
你想做
get(key).add(new value)之类的事情吗? -
是的! N整个密钥在消费者端刷新!
我使用 (String, Arraylist of String) 作为 gemfire 缓存中的键值对。是否有任何方法可以从值列表中添加或删除特定值而不获取整个列表并添加/删除和发布再列出来?!
【问题讨论】:
get(key).add(new value)之类的事情吗?
您可以创建包装对象来保存列表。这个包装对象可以实现delta interface。使用它,您可以从列表中添加/删除字段。看看这是否有帮助。
【讨论】:
GemFire在存储时对值进行序列化,并有各种复杂的配置来控制序列化的类型和级别。
因此,当您更新值中的值时,发生的情况是序列化的值正在流式传输到客户端,然后您正在更改它,然后重新序列化更改的值并将其流式传输到服务器然后存储它。
如果您只想在服务器端本身更新 ArrayList 中的值,那么您必须创建一个服务器端侦听器并将该类添加到服务器的类路径中,以便您可以更精细地管理序列化/反序列化。
或者,您可能需要更改您的数据模型,使 ArrayList 值更像一个地图,并被展平为与主要区域共存的次要区域,等等。
【讨论】: