Итак, этот метод вызывается, когда приходит запрос, и я сохраняю данные в кеше.Запросы могут быть параллельными.Тем не менее, после, скажем, 10 запросов, я ожидаю, что размер кэша будет 10, но размер 1 с данными 10-го запроса.
Я упускаю что-то простое здесь, но не могу понять.
@Service
@Slf4j
public class RequestCacheService {
private ReadWriteLock lock;
RequestCacheService() {
lock = new ReentrantReadWriteLock();
}
public void saveToCache(RequestDto requestDto) {
log.info("Saving request");
try {
lock.writeLock().lock();
cache.build();
cache.getRequiredCache()
.put(requestDto.getTimestamp().getEpochSecond(), requestDto.getData());
log.info("Size of cache: " + cache.getRequiredCache().size());
} finally {
lock.writeLock().unlock();
}
}
Это CacheService:
public class CacheService {
private static LoadingCache<Long, String> REQUIRED_CACHE;
public static LoadingCache<Long, String> getRequiredCache() {
return REQUIRED_CACHE;
}
public static void build() {
REQUIRED_CACHE = CacheBuilder.newBuilder()
.expireAfterWrite(30, TimeUnit.SECONDS)
.build(new CacheLoader<Long, String>() {
@Override
public String load(Long s) throws Exception {
return null;
}
});
}
}