在多用户情况下,保持资源更改与内存和持久存储同步的好方法是什么?这是两个想法,但它们都是笨拙的
候选人A
此处,必须检索r
的副本,以便在put
上同时更新内存状态和持久状态。
Resource r = resources.getDeepCopyOfResourceById("foo");
r.removeValue("bar");
resources.put(r);
候选人B
此处,更新操作位于服务级别。在我看来,这是一种面向对象的反模式。
Resource r = resources.getResourceById("foo");
resources.removeValue("foo", r);
有没有更好的方法来设计它?
答案 0 :(得分:1)
保持资源更改与两者同步的好方法是什么 多用户情况下的内存和持久存储?
一般来说,这里有两个问题:缓存和并发。
对于缓存,您需要确定要使用的策略。有很多选择。例如:
当您决定缓存模式时,下一步是使缓存和持久数据访问线程安全。这通常通过事务和锁来实现。确切的实现取决于您使用的库。