Redis-реализовать приоритетную очередь

Redis реализует функцию очереди, обычно используя команду LPUSH и команду BRPOP для ее завершения. Однако очереди также имеют свои собственные приоритеты.Если существует несколько очередей, но есть только один потребитель, как достичь приоритета потребления?

Базовый синтаксис BRPOP

BLPOP LIST1 LIST2 .. LISTN TIMEOUT 

第一个是键名,第二个是超时时间,单位是秒,如果列表为空或者超过了超时时间还没获取到新元素,就返回一个nil,否则返回一个含有两个元素的列表,第一个元素是被弹出元素所属的key,第二个元素是被弹出元素的值。

超时时间为"0",表示不限制等待的时间。

Можно обнаружить, что первый параметр поддерживает несколько ключей, поэтому команда BLPOP может фактически получать несколько ключей одновременно. Когда команда BLPOP отслеживает несколько ключей одновременно, до тех пор, пока в одном ключе есть элемент, элемент будет всплывать. Если несколько ключей не имеют элементов, он будет заблокирован. Конечно, если есть элементы в нескольких ключах, то элементы в ключе будут появляться в порядке ключей, определенном командой BLPOP, которая косвенно реализует приоритет очереди.

Пример реализации Redis с приоритетной очередью

Сначала откройте два экземпляра redis-cli, порт - 6380, один как потребитель, другой как производитель, следующим образом:

Вставьте описание изображения сюда

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

Поместите в очередь следующие 3 элемента: 1 ключ:
Вставьте описание изображения сюда

Поместите в очередь следующие 2 элемента: 2 ключа:
Вставьте описание изображения сюда

Поместите в очередь следующий элемент: 3:
Вставьте описание изображения сюда

Затем позвольте потребителю использовать команду BRPOP для отслеживания вышеуказанных 3 ключей, попытаться извлечь элементы и увидеть порядок, в котором элементы выталкиваются:
Вставьте описание изображения сюда
из результата вывода элементы выталкиваются по порядку, и только элементы в первом ключе почти потребляются. Когда он исчерпан, элементы во втором ключе будут всплывать, а затем элементы будут извлекаться по порядку, пока не останется элементов в состоянии блокировки.

подводить итоги

С помощью команды BRPOP для одновременного мониторинга нескольких ключей можно реализовать функцию очереди приоритетов.

рекомендация

отblog.csdn.net/weixin_38106322/article/details/108525044
рекомендация