2015-09-16 2 views
0

Начал использовать ehcache. И как и в случае с более новыми версиями, мы можем выполнять поиск по атрибутам значения, поэтому для данного кеша мы можем искать и получать результат.Стратегия поиска Ehcache: ключ finesse vs query

Например, скажем, мой сайт кэширует все данные пользователей с момента запуска моего сервера приложений и для регистрации нового пользователя. У меня есть запись за кешированием. Теперь, когда пользователь входит в систему, я просматриваю кеш и получаю несколько деталей.

Вот что я сделал, ключ: «userId» значение: новый Пользователь («имя», возраст);

Теперь, когда это необходимо, я хочу найти всех пользователей, возраст которых выше 30, затем я мог бы использовать поисковый запрос для извлечения набора данных. Это оказывается более медленным, как в 1 миллион данных, за 5 миллионов ударов он составляет почти 2 - 3 секунды.

Моя другая идея: есть ключ с возрастом в виде строки, например ключ: «идентификатор пользователя # возрастного» со значением: новый User («название», возраст)

Теперь вместо запросов, использование поиск с ключом для ключа: например (anyuser # [(nextchar начинается с 3) до 2 символов) и возвращает результат.

Меня интересует три вещи.

  1. Может ли вторая идея быть реализована с использованием ehcache? Если так, то это будет исполнителем?

  2. Я делаю что-то не так в поиске запроса? Взятие 2 секунды - это, конечно, то, что не согласуется с тем, что обещает ehcache.

  3. Какова общая стратегия при именовании ключа? Если это случайное (я не знаю, когда это может быть полезно), должно ли оно содержать значение, объединенное таким образом, чтобы его можно было искать?

ответ

0

Ответы на вопросы, используя ту же нумерацию:

  1. Нет, Ehcache не имеют методов, что позволяет восстановление отображений с использованием ключом шаблона, за пределами с помощью функции поиска.
  2. Возможно, вы не ошибетесь в своем поисковом запросе. Поиск OpenSource Ehcache - это решение грубой силы, которое не зависит от создания индекса. Так что это медленный процесс, когда у вас много записей.
  3. Key именование к вам - особенно учитывая ответ на 1.

Что вы можете сделать для вашего случая использования является поддержание записей кэша, которые являются ответами на ваши вопросы. Подобно ключу usersAbove30 с указанием значения всех пользователей, соответствующих условию, выраженному в ключе.

+0

пункт 1. кажется неправильным, по крайней мере для более новых версий, ключей и поиска, как и другие атрибуты, см .: http://www.ehcache.org/documentation/2.8/apis/search.html#creating-a -query – Gregor

+0

Вы правы, мой ответ был вне контекста поиска - обновления, чтобы уточнить это. –

Смежные вопросы