Guava Cache: одновременные значения не добавляются в кеш - PullRequest
0 голосов
/ 17 марта 2019

Итак, этот метод вызывается, когда приходит запрос, и я сохраняю данные в кеше.Запросы могут быть параллельными.Тем не менее, после, скажем, 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;
                    }
                });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...