From d26d6d4fc7f76d3285ab0cbf948d99b625aed766 Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Mon, 17 Jun 2024 18:57:16 +0300 Subject: [PATCH] vault backup: 2024-06-17 18:57:16 --- .obsidian/plugins/home-tab/data.json | 18 +++++----- .../plugins/recent-files-obsidian/data.json | 36 +++++++++---------- _inbox/Least Recently Used.md | 3 +- _inbox/Most Recently Used.md | 11 ++++++ _inbox/Кэширование.md | 16 ++++++--- 5 files changed, 52 insertions(+), 32 deletions(-) create mode 100644 _inbox/Most Recently Used.md diff --git a/.obsidian/plugins/home-tab/data.json b/.obsidian/plugins/home-tab/data.json index efc939ae..a551c53f 100644 --- a/.obsidian/plugins/home-tab/data.json +++ b/.obsidian/plugins/home-tab/data.json @@ -24,24 +24,24 @@ "unresolvedLinks": false, "recentFilesStore": [ { - "filepath": "_inbox/Принцип локальности.md", - "timestamp": 1718639370931 + "filepath": "_inbox/2024-06-17 1718639812.md", + "timestamp": 1718639813049 }, { "filepath": "_inbox/Кэширование.md", - "timestamp": 1718639363870 + "timestamp": 1718639716918 }, { - "filepath": "_inbox/Redis.md", - "timestamp": 1718639336820 + "filepath": "_inbox/Принцип локальности.md", + "timestamp": 1718639715482 }, { - "filepath": "wiki/zero/00 HighLoad.md", - "timestamp": 1718638801082 + "filepath": "_inbox/Least Recently Used.md", + "timestamp": 1718639706047 }, { - "filepath": "knowledge/human/Стресс.md", - "timestamp": 1718638580710 + "filepath": "_inbox/Memcached.md", + "timestamp": 1718639697873 } ], "starredFileStore": [], diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index 90ac10a1..b57df30c 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,12 +1,28 @@ { "recentFiles": [ + { + "basename": "Most Recently Used", + "path": "_inbox/Most Recently Used.md" + }, + { + "basename": "Кэширование", + "path": "_inbox/Кэширование.md" + }, { "basename": "Принцип локальности", "path": "_inbox/Принцип локальности.md" }, { - "basename": "Кэширование", - "path": "_inbox/Кэширование.md" + "basename": "Least Recently Used", + "path": "_inbox/Least Recently Used.md" + }, + { + "basename": "Memcached", + "path": "_inbox/Memcached.md" + }, + { + "basename": "Generational Collection", + "path": "knowledge/dev/java/gc/Generational Collection.md" }, { "basename": "Redis", @@ -136,10 +152,6 @@ "basename": "Обучающий курс от HighLoad конференции 2024", "path": "source/курсы/_toc/Обучающий курс от HighLoad конференции 2024.md" }, - { - "basename": "Memcached", - "path": "_inbox/Memcached.md" - }, { "basename": "00 Nginx", "path": "wiki/zero/00 Nginx.md" @@ -187,18 +199,6 @@ { "basename": "Без названия", "path": "Без названия.md" - }, - { - "basename": "00 MySQL", - "path": "wiki/zero/00 MySQL.md" - }, - { - "basename": "00 Linux", - "path": "wiki/zero/00 Linux.md" - }, - { - "basename": "Ударение", - "path": "_inbox/Ударение.md" } ], "omittedPaths": [], diff --git a/_inbox/Least Recently Used.md b/_inbox/Least Recently Used.md index a0655321..39a1af97 100644 --- a/_inbox/Least Recently Used.md +++ b/_inbox/Least Recently Used.md @@ -7,7 +7,8 @@ date: - - 2024-05-24 zero-link: - "[[00 Разработка]]" -parents: +parents: + - "[[Кэширование]]" linked: --- LRU (Least Recently Used) — это алгоритм управления кэш-памятью, который выбирает для удаления тот элемент, который был использован дольше всего. Этот алгоритм часто используется в системах, где ограничены ресурсы памяти, и необходимо эффективно управлять кэшированием данных. diff --git a/_inbox/Most Recently Used.md b/_inbox/Most Recently Used.md new file mode 100644 index 00000000..368ee232 --- /dev/null +++ b/_inbox/Most Recently Used.md @@ -0,0 +1,11 @@ +--- +aliases: + - MRU +tags: + - зрелость/🌱 +date: + - - 2024-06-17 +zero-link: +parents: +linked: +--- diff --git a/_inbox/Кэширование.md b/_inbox/Кэширование.md index 40efa003..36430fbd 100644 --- a/_inbox/Кэширование.md +++ b/_inbox/Кэширование.md @@ -23,9 +23,7 @@ linked: - «**Не хотелось бы потерять**». Здесь можно упомянуть счетчики посетителей сайта, просмотров ресурсов и т.п. Хоть и восстановить эти значения иногда напрямую невозможно, но значения этих ключей имеют ограниченный по времени смысл: через несколько минут их значение уже неактуально, и будет рассчитано заново. - «**Совсем не должны терять**». Кэш удобен для хранения сессий пользователей. Однако содержимое сессий не хотелось бы терять никогда – иначе пользователей на сайте будет «разлогинивать». Как попытаться избежать? Можно кластеризовать систему кэширования, так вероятность потери снижается. -Инвалидация: -- По истечению срока жизни - TTL -- Принудительный вызов команды инвалидации + ## Ключ кэширования Ключ кэширования должен обладать следующими свойствами: - При изменении параметров выборки, которую мы кэшируем, ключ кэширования должен изменяться (чтобы с новыми параметрами мы не «попали» в старый кэш). @@ -44,4 +42,14 @@ $key = md5(serialize($options)) Один из подходов это инвалидация по времени. Для кэшированных данных устанавливается TTL, и по прошествию времени кэш удаляется. Такое вариант подходит для редко изменяемых данных, устаревание которых не приводит к серьезным проблемам в бизнес-логике, например словари. При таком варианте важно подобрать оптимальное время жизни кэша, слишком маленькое время жизни будет давать плохую производительность, слишком большое ухудшит опыт пользователей. -Первый вариант не подходит. Некоторые чуствительные данные нужно инвалидировать их сразу при изменении. Тут может помочь тегирование ключей. \ No newline at end of file +Первый вариант не подходит. Некоторые чуствительные данные нужно инвалидировать их сразу при изменении. Тут может помочь тегирование ключей. + +Инвалидация: +- По истечению срока жизни - TTL +- Принудительный вызов команды инвалидации +- Алгоритмы вытеснения + +Алгоритмы вытеснения: +- Алгоритм Белади. Несуществующий идеальный алгоритм. Храним только нужную информацию, не нужную не храним. +- [Least Recently Used](Least%20Recently%20Used.md) +- [[MRU]] \ No newline at end of file