如何同时更新缓存的Java对象

时间:2014-12-18 19:26:51

标签: java caching concurrency immutability

我正在尝试更新应用程序中的值,我们称之为Foo对象。 Foo作为java对象是不可变的,但可以通过Hibernate实体在数据库中更新。我通过调用加载缓存覆盖(Guava缓存作为实现)访问Foo对象,当它不存在时从数据库加载值。此外,尽管可以进行并发写入,但是对Foo对象的写入很少,但很多次读取。

更新Foo对象的最佳方法是什么?在更新时锁定缓存?其他一些结构设计?

请注意,在广泛的互联网中肯定有关于这个主题的信息,但我读了很多,试图解决这个问题,我把自己搞糊涂了。我目前倾向于关于缓存实现类的更新方法的ReentrantLock,但似乎应该有更好的方法。

1 个答案:

答案 0 :(得分:0)

我不确定我的问题是否正确。但问题似乎与我在这里回答的问题相同/相似:Guava Cache, how to block access while doing removal

如果没有,请添加更多详细信息。