Программирование на Golang.Помогите пожалуйста, не понимаю задачу.
Вы разрабатываете систему управления запасами для крупного интернет-магазина. Ваша задача - оптимизировать процесс получения информации о товарах, используя стратегии кеширования. Система должна уметь обрабатывать запросы на получение информации о товаре, а также обновлять информацию о товаре в базе данных и кеше.
Требования:
Кеширование информации о товаре: Когда пользователь запрашивает информацию о товаре, система должна сначала проверять наличие этой информации в кеше. Если информация отсутствует, она должна быть загружена из базы данных и сохранена в кеше.
Инвалидация кеша при изменении данных: Когда информация о товаре обновляется (например, изменение цены или количества), соответствующая запись в кеше должна быть инвалидирована или обновлена.
Применение стратегии TTL: Для кешированных данных о товаре должен быть установлен TTL (Time-To-Live), чтобы гарантировать актуальность информации.
Примечания
Структура Данных Товара:
type Product struct {
ID int
Name string
Price float64
Stock int
}
Функция получения информации о товаре:
func getProduct(productId int, db map[int]Product, cache *Cache) (Product, error)
Функция обновления информации о товаре (фейк-функция выполняющая роль базы данных):
func updateProduct(productId int, newProduct Product, db map[int]Product) error
Кеш продуктов:
type Cache struct {
products map[int]Product // Кэш продуктов
ttl time.Duration // Время жизни записи в кэше
}
func NewCache() *Cache
Получение продукта из кеша:
func (c *Cache) Get(productId int) (Product, bool)
Сохранение продукта в кеш:
func (c *Cache) Set(productId int, product Product)
Инвалидация кеша:
func (c *Cache) Invalidate(productId int)
Вам нужно реализовать следующие функции:
getProduct(productId int, db map[int]Product, cache *Cache) (Product, error) - функция получения информации о товаре. Она должна проверять наличие информации о товаре в кеше, если информация отсутствует, загружать её из базы данных и сохранять в кеше.
updateProduct(productId int, newProduct Product, db map[int]Product) error - функция обновления информации о товаре. Она должна обновлять информацию о товаре в базе данных и инвалидировать или обновить соответствующую запись в кеше.
NewCache() - функция создания нового кеша продуктов.
Get(productId int) (Product, bool) - функция получения продукта из кеша.
Set(productId int, product Product) - функция сохранения продукта в кеш.
Invalidate(productId int) - функция инвалидации кеша.
Для реализации кеширования информации о товаре, вы можете использовать структуру Cache, которая содержит кэш продуктов (products) и время жизни записи в кеше (ttl).
При получении информации о товаре, система должна сначала проверять наличие этой информации в кеше (Get). Если информация отсутствует, она должна быть загружена из базы данных (db) и сохранена в кеше (Set).
При обновлении информации о товаре, соответствующая запись в кеше должна быть инвалидирована или обновлена (Invalidate).
Для кеширования данных о товаре, вы можете использовать TTL (Time-To-Live), чтобы гарантировать актуальность информации.
Вам также нужно реализовать функцию updateProduct, которая будет выполнять роль базы данных и обновлять информацию о товаре в базе данных.
полная жесть