Top.Mail.Ru
Ответы

Программирование на 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, которая будет выполнять роль базы данных и обновлять информацию о товаре в базе данных.

Аватар пользователя
Ученик

полная жесть