Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Java |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
mayton Member Откуда: loopback Сообщений: 50489 |
Привет друзья! Все пользуются кешами. Сегодня топик не о том как прогреть кеш. А наоборот. Как удалить из него устаревшие или изменённые записи. Вопрос - сложный. И в общем случае еще нерешённый для 90% юзкейсов что я видел. Особенно для реляционных БД. Вобщем - отпишите ваш опыт (позитивный и негативный) Спасибо. |
10 окт 19, 14:56 [21991349] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
Хеш-теги по теме (пишу навскидку по памяти могу что-то забыть поэтому прошу дополнять): Java: EhCache, InfiniSpan, @EnableCaching (Spring) General: Memcached, Redis Servers: nginx HTTP: Expires, Cache-Control, Age Из Оракловых технологий: OCI Client Caching Алгоритмы: LRU, 2Q, ARC Теория: ? Х.З |
10 окт 19, 16:23 [21991448] Ответить | Цитировать Сообщить модератору |
Alexey Tomin Member Откуда: Самара Сообщений: 1955 |
У нас в итоге свой костылище написали :) 1. На метод с кэшированием можно поставить тэг. Потом сказать "почистить все кэши с таким тэгом". Есть и другие способы сбрасывать конкретный кэш. 2. Когда случился кэшмисс- в стеке ищутся другие методы, создающие сейчас кэш и выставляются зависимости. Поэтому когда чистятся кэши (строки кжшей) из пункта 1 - то чистятся и те строки кэши, заполнение которых было в стеке в момент создания кэша ![]() Можно пользоваться. Заодно проверьте на JDK11 - всё никак не доберусь... |
||
11 окт 19, 11:22 [21991953] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
Круто вам. А сколько времени (мс) прибл. занимала чистка кеша? |
||||
11 окт 19, 11:40 [21991975] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
Еще сам себе добавлю. HTTP: Expires, Cache-Control, Age, Etag |
||
11 окт 19, 11:48 [21991986] Ответить | Цитировать Сообщить модератору |
Alexey Tomin Member Откуда: Самара Сообщений: 1955 |
Вот не считал никогда. Да и зачем? Если кэш почистился- то потом он будет заполнятся- и это важнее по времени. Да и чистка приводит к сборке мусора, а насколько она замедлится- никто не знает. PS: сейчас я думаю, как бы обойтись без кодогенерации. А если на kotlin перейти? Но пока не придумал решение. |
||||
11 окт 19, 12:15 [21992024] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
Пока вот такой статус.mayton@ryzen-ssd:~/git/mxcache$ uname -a Linux ryzen-ssd 5.0.0-31-generic #33~18.04.1-Ubuntu SMP Tue Oct 1 10:20:39 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux mayton@ryzen-ssd:~/git/mxcache$ mayton@ryzen-ssd:~/git/mxcache$ javac -version javac 11.0.4 mayton@ryzen-ssd:~/git/mxcache$ mvn -version Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T21:41:47+03:00) Maven home: /maven/3.6.0 Java version: 11.0.4, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64 Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "5.0.0-31-generic", arch: "amd64", family: "unix" mayton@ryzen-ssd:~/git/mxcache$ mvn clean package -DskipTests ............ [WARNING] The POM for com.maxifier.mxcache:mxcache-asm:jar:7.1 is missing, no dependency information available [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary for MxCache 2.6.9-SNAPSHOT: [INFO] [INFO] MxCache ............................................ SUCCESS [ 0.849 s] [INFO] MxCache runtime .................................... FAILURE [ 0.062 s] [INFO] MxCache instrumentator ............................. SKIPPED [INFO] Generator of MxCache cache classes ................. SKIPPED [INFO] MxCache IDEA API stubs ............................. SKIPPED [INFO] MxCache Idea plugin ................................ SKIPPED [INFO] MxCache maven plugin ............................... SKIPPED [INFO] MxCache gradle plugin .............................. SKIPPED [INFO] MxCache guice integration .......................... SKIPPED [INFO] MxCache Guava integration .......................... SKIPPED [INFO] MxCache tests ...................................... SKIPPED [INFO] JConsole plugin stub ............................... SKIPPED [INFO] MxCache JMX ........................................ SKIPPED [INFO] MxCache EhCache strategies ......................... SKIPPED [INFO] MxCache API stub generator ......................... SKIPPED [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.125 s [INFO] Finished at: 2019-10-12T15:09:53+03:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal on project mxcache-runtime: Could not resolve dependencies for project com.maxifier.mxcache:mxcache-runtime:jar:2.6.9-SNAPSHOT: Failure to find com.maxifier.mxcache:mxcache-asm:jar:7.1 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR] mvn <goals> -rf :mxcache-runtime |
12 окт 19, 15:22 [21992760] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
Менял профили. Пока не помогает.mvn clean package -DskipTests -P jdk9 mvn clean package -DskipTests -P release |
12 окт 19, 15:49 [21992764] Ответить | Цитировать Сообщить модератору |
rabiter Member Откуда: SPb Сообщений: 667 |
У меня та же ошибка при сборке. А интересно было бы посмотреть. У меня в мыслях уже давно (только что проверил, аж в 2016 году таску заводил) прикрутить какой-нибудь централизованный кеш на JCache API (JSR 107). С имплементаторами пока не определился, но вроде EHCache имплементируют JSR 107. Вообще не пролема и допилить под свои нужды. Тоже та же идея, вешать аннотацию на метод типа @CachedResults Или по скоупам: @RequestScopedCachedResults @SessionScopedCachedResults и т.д. т.е. инвалидация этих кешей будет происходить в момент дестроя скоупа. Или @CachedResults(Type=Type.SYSTEM_CONFIGURATION) Ну и если выясняется, что SYSTEM_CONFIGURATION меняется, бросаем событие, и все кеши типа SYSTEM_CONFIGURATION чистятся. Но это просто задумки... Нет нет да вернусь к этому вопросу, когда-нибудь прикручу. Сейчас же в большей массе весь кеш это просто какие-то локальные решения, HashMaps, SessionScoped / ApplicationScoped бины и т.д. |
12 окт 19, 18:28 [21992808] Ответить | Цитировать Сообщить модератору |
Андрей Панфилов Member Откуда: Москва > Melbourne Сообщений: 3799 |
|
||
12 окт 19, 18:46 [21992816] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
Если закомментарить плагины maven-javadoc-plugin maven-gpg-plugin И инсталлировать по-модулям отдельно то компилляция проходит чуть дальше но всё равно есть failed tests. |
12 окт 19, 19:34 [21992838] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
Меня в топике больше-бы интересовали более общие вопросы. А имено. Какие бывают кеши? Вот статья на хабре https://habr.com/en/post/38771/ различает - Независимый или статичный - Явно-зависимый - Неявно-зависимый - Условно-зависимый Связи между кешированием и шаблонами (CQRS например). Прочие свойства (идемпотентность данных). А также теорема Брювера. |
12 окт 19, 20:22 [21992854] Ответить | Цитировать Сообщить модератору |
rabiter Member Откуда: SPb Сообщений: 667 |
к сожалению, у нас не спринг.. |
||||
14 окт 19, 02:59 [21993344] Ответить | Цитировать Сообщить модератору |
Alexey Tomin Member Откуда: Самара Сообщений: 1955 |
И вправду- был сломан пуш в mvn-central (сделали не очень хорошими костылями). Пофикшу. |
14 окт 19, 07:54 [21993365] Ответить | Цитировать Сообщить модератору |
Андрей Панфилов Member Откуда: Москва > Melbourne Сообщений: 3799 |
|
||
14 окт 19, 12:14 [21993575] Ответить | Цитировать Сообщить модератору |
Alexey Tomin Member Откуда: Самара Сообщений: 1955 |
Ага. mxcache-asm собирается и пушится отдельно. Он уже на oss.sonatype.com но ещё не доехал до мавен-централа. Можно просто зайти туда и сделать mvn install (главное, чтобы был любой ключ gnupg локально- он сразу подписывает сборку). Ну и тесты- пофиксил, там странная какая-то микробага с особенностями open jdk связанная. |
||
14 окт 19, 14:05 [21993719] Ответить | Цитировать Сообщить модератору |
Alexey Tomin Member Откуда: Самара Сообщений: 1955 |
Т.е.
cd mxcache-asm
mvn install
|
||
14 окт 19, 14:06 [21993723] Ответить | Цитировать Сообщить модератору |
rabiter Member Откуда: SPb Сообщений: 667 |
Да это все понятно Надо только убедиться, что вызов аспектов в итоге не тратит больше времени чем польза от кеширования) Это я не про AspectJ, а про интерсепторы спринговые и CDI. |
||||
14 окт 19, 15:05 [21993800] Ответить | Цитировать Сообщить модератору |
rabiter Member Откуда: SPb Сообщений: 667 |
Alexey Tomin, mxcache был изначально только частью вашего проекта, а потом вы вынесли его на гитхаб, правильно я понимаю? Я глянул, там довольно много всего) |
14 окт 19, 15:07 [21993807] Ответить | Цитировать Сообщить модератору |
Alexey Tomin Member Откуда: Самара Сообщений: 1955 |
Там собственно кэш, плюс интеграции- с джусом, с мавен/грэдл/идеей. Никаких "кишков" основных проектов не попало. |
||
14 окт 19, 17:13 [21993954] Ответить | Цитировать Сообщить модератору |
rabiter Member Откуда: SPb Сообщений: 667 |
Да это понятно, что от основных проектов там ничего нет. Просто интересно, что послужило толчком вынести кеш как отдельный проект в гитхаб? |
||||
14 окт 19, 17:18 [21993964] Ответить | Цитировать Сообщить модератору |
Alexey Tomin Member Откуда: Самара Сообщений: 1955 |
Изначально надо было выделить этот код в библиотеку, чтобы использовать в нескольких проектах. А дальше, насколько я понимаю, результат показался достаточно хорошим, чтобы можно было показать всем. Ну и прикольно же ![]() |
||
15 окт 19, 07:19 [21994245] Ответить | Цитировать Сообщить модератору |
rabiter Member Откуда: SPb Сообщений: 667 |
Да, согласен, прикольно! Похожая ситуация, подумывал вынести кое-что в public, но потом как понял сколько там еще надо доделывать для паблика и плюнул) Извиняюсь за флуд. |
||||
15 окт 19, 13:52 [21994631] Ответить | Цитировать Сообщить модератору |
mayton Member Откуда: loopback Сообщений: 50489 |
На другом окружении ver Microsoft Windows [Version 10.0.17763.678] java -version java version "1.8.0_221" Java(TM) SE Runtime Environment (build 1.8.0_221-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode) [ERROR] Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.5:sign (default) on project mxcache-asm: Exit code: 1 -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.5:sign (default) on project mxcache-asm: Exit code: 1 at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148) |
||||
15 окт 19, 14:52 [21994684] Ответить | Цитировать Сообщить модератору |
Alexey Tomin Member Откуда: Самара Сообщений: 1955 |
Я ж говорю- GPG надо иметь с ключом. Мавен централ пока не пропихнул либу :( PS: но вот собирать на винде я даже никогда не пробовал. У нас винда только у PM'а, у которой и java-то не установлена ![]() |
||
15 окт 19, 16:10 [21994772] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Java | ![]() |