gpt4 book ai didi

java - 更新缓存 :Google Guava 的最佳方法

转载 作者:行者123 更新时间:2023-11-29 07:07:00 25 4
gpt4 key购买 nike

这就是我在做的事情

Cache<String,MYClass> cache=CacheBuilder.newBuilder().
maximumSize(100).
expireAfterAccess(30, TimeUnit.MINUTES).
build();

String id="myid";
MyClass obj=cache.getIfPresent(id);
System.out.println(obj.getMyVariable);
obj.setMyVariable("myNewString");
updateCache(id,obj);
myClass obj2=cache.getIfPresent(id);
System.out.println(obj2.getMyVariable);

缓存会更新 MyClass 对象本身吗?我想不会。如果不是,哪种方法更好?

void update(String id,MyClass obj){
cache.put(id,obj);
}

void update(String id,Myclass obj){
cache.invalidate(id);
cache.put(id,obj);
}

期望的输出:

myOldString
myNewString

最佳答案

Guava 的缓存不会复制放入其中的对象。如果您正在修改从缓存中获取的对象,那么您就是在为每个人修改它(并且不需要为此更新缓存,因为它引用相同的实例)。

最好缓存不可变的对象,或者至少适本地支持并发修改(这通常并不意味着它的访问器只是同步,所以说起来容易做起来难)。

关于java - 更新缓存 :Google Guava 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com