Nano Hash - криптовалюты, майнинг, программирование

Grails, почему мой кеш становится недействительным?

Я кэшировал некоторые экземпляры домена и запросы в своем приложении Grails. Я ожидаю, что после первого запуска запросов к db последующие вызовы будут попадать только в кеш. Но я вижу, что периодически запросы попадают в БД (после каждых 5-6 раз). В это время данные не обновляются/не вставляются в базу данных. Я использую p6spy для проверки всех зарегистрированных запросов и не вижу никаких обновлений или вставок.

Есть ли какие-то дополнительные настройки, которые мне нужно настроить?

В настоящее время класс домена имеет

static mapping = {
cach true
}

Запросы типа findBy* имеют набор [cache:true].


  • Это нормально. кеш будет аннулирован после выполнения определенных условий. конфигурация кеша должна быть установлена ​​в ehcache config. по умолчанию загружается конфигурация ehcache-failsafe. И я думаю, что кеш по умолчанию становится недействительным через 5 минут. 11.03.2012

Ответы:


1

Если вы не настроите Ehcache, ваши кэши будут использовать время ожидания по умолчанию, равное 120 секундам. См. http://ehcache.org/ehcache.xml, где хорошо прокомментирован файл примера, аналогичный файл по умолчанию, который находится в банке Ehcache.

Вы можете настроить тайм-ауты, максимальное количество элементов в памяти, возможность перетекания на диск и т. д., создав файл ehcache.xml в своем приложении. Поместите его в src/java, и он будет скопирован в путь к классам, и Ehcache увидит его и будет использовать ваш вместо значений по умолчанию.

10.03.2012
  • Я наткнулся на следующий пост (tech.puredanger.com/2009/ 07/10/hibernate-query-cache) относительно кеша запросов гибернации. Являются ли эти наблюдения по-прежнему действительными, то есть лучше ли вообще отключить кэш запросов? 11.03.2012
  • Да, все баллы в силе. Некоторые запросы являются хорошими кандидатами для кэширования, но если вы редактируете, добавляете или удаляете экземпляры определенного доменного класса, лучше не кэшировать запросы для этого класса. Кэшируйте экземпляры и запросы для доменных классов, предназначенных только для чтения и преимущественно для чтения, а также для тех, которые обновляются, рассмотрите возможность его избегания (хотя это зависит от приложения и вариантов использования). Я рекомендую вам изменить grails.hibernate.cache.queries на false в Config.groovy и добавить cache: true для каждого запроса. 11.03.2012
  • Спасибо! У меня сложилось впечатление, что отключение grails.hibernate.cache.queries на false означает, что никакие запросы не могут быть кэшированы. Эта гибкость отключения, а затем возможность установить cache:true для отдельных запросов очень хороша. 11.03.2012
  • @BurtBeckwith Является ли hibernate{cache.use_query_cache=false} в DataSource.groovy таким же, как grails.hibernate.cache.queries=false в Config.groovy? 28.12.2013
  • Нет, use_query_cache включает/выключает эту функцию, но grails.hibernate.cache.queries можно рассматривать как запросы с автоматическим кэшированием, т.е. всегда использовать его для каждого запроса - очень плохая идея - см. tech.puredanger.com/2009/07/10/hibernate-query-cache 28.12.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..