保持内存更改与后端同步的好方法是什么?

时间:2016-09-29 09:57:52

标签: java design-patterns

在多用户情况下,保持资源更改与内存和持久存储同步的好方法是什么?这是两个想法,但它们都是笨拙的

候选人A

此处,必须检索r的副本,以便在put上同时更新内存状态和持久状态。

Resource r = resources.getDeepCopyOfResourceById("foo");
r.removeValue("bar");
resources.put(r);

候选人B

此处,更新操作位于服务级别。在我看来,这是一种面向对象的反模式。

Resource r = resources.getResourceById("foo");
resources.removeValue("foo", r);

有没有更好的方法来设计它?

1 个答案:

答案 0 :(得分:1)

  

保持资源更改与两者同步的好方法是什么   多用户情况下的内存和持久存储?

一般来说,这里有两个问题:缓存和并发。

对于缓存,您需要确定要使用的策略。有很多选择。例如:

  • 通读/写作
  • 写一下
  • 写在后面
  • 缓存

当您决定缓存模式时,下一步是使缓存和持久数据访问线程安全。这通常通过事务和锁来实现。确切的实现取决于您使用的库。