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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы