Встречается на 2% собеседований по Java

Можно ли реализовать кэш в базе данных

Да, можно реализовать кэш в базе данных. Обычно для этого используют:

  1. Отдельные таблицы для хранения кэшированных данных с TTL (Time-To-Live)
  2. Материализованные представления (Materialized Views)
  3. Встроенные механизмы (например, Redis как кэш-слой)

Пример на Java с Spring Cache + JPA:

java
@Entity
@Table(name = "cache_data")
public class CacheEntry {
    @Id
    private String key;
    private String value;
    private LocalDateTime expiryTime;
}

@Repository
public interface CacheRepository extends JpaRepository<CacheEntry, String> {
@Modifying
@Query("DELETE FROM CacheEntry c WHERE c.expiryTime < CURRENT_TIMESTAMP")
void cleanupExpired();
}

@Service
@CacheConfig(cacheNames = "databaseCache")
public class CacheService {
@Autowired
private CacheRepository repository;

text
@CachePut(key = "#key")
public String cache(String key, String value, Duration ttl) {
    repository.save(new CacheEntry(key, value, LocalDateTime.now().plus(ttl)));
    return value;
}

@Cacheable(key = "#key")
public String get(String key) {
    return repository.findById(key)
        .filter(entry -> entry.getExpiryTime().isAfter(LocalDateTime.now()))
        .map(CacheEntry::getValue)
        .orElse(null);
}

}

text

Плюсы: простота, ACID-гарантии. Минусы: меньшая производительность по сравнению с in-memory решениями.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы