Чем организовать очередь с возможностью поиска?

На данный момент удачно пользуюсь очередью redis, её производительность полностью устраивает. Но не хватает поиска.
Опишу задачу чтобы было понятнее. Есть активная очередь с постоянным заполнением ~10 000 записей. Каждая запись это объект с 9 полями/свойствами. Записи поступают в правую часть очереди, а с левой вынимаются. При этом периодически нужно находить в очереди приоритетные записи и вынимать их, как бы пропуская вперед. Критерии приоритета таких записей изменчивы, поэтому сразу говорю, нельзя заранее их поместить в отдельную очередь, нужно именно выбирать из общей. Кроме того вынимать по критериям нужно лишь элемент который наиболее левее (т.е. ближе к естественному наступлению своей очереди на извлечение)
  • Вопрос задан
  • 187 просмотров
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
поиск - это индекс
со всеми "удобствами" навроде перестройки после каждой вставки, ага

берешь Postgre со всеми инмемору наворотами и nosql надстройками
берешь Монго (память, прощай) или Эластик (не, ну не перегибай...)
берешь Manticore

настраиваешь ,тестируешь на реальных данных

я бы остановился на последнем,но вот не очень уверен в хорошей работе при постоянной вставке, хотя RT индекс развивают же...
Ответ написан
Комментировать
@Arlekcangp
Разработчик, Лид, Архитектор ПО
То что было в очереди должно сохраняться ? Вроде 10000 записей - это не очень много и можно в памяти держать. Банально написать свою реализацию кольцевого буфера. При этом вынимаемый из середины элемент не удалять, а пометить как прочитанный, что бы когда до него дойдёт указатель конца, он его тупо пропустил.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы