Встречается на 2% собеседований по Java
Можно ли реализовать кэш в базе данных
Да, можно реализовать кэш в базе данных. Обычно для этого используют:
- Отдельные таблицы для хранения кэшированных данных с TTL (Time-To-Live)
- Материализованные представления (Materialized Views)
- Встроенные механизмы (например, 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 решениями.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы