Skip to main content

Simple Redis work queue with added features (priorities, pop multiple items at once)

Project description

redis-priority-queue is a simple work queue similar to Redis lists with the following added features:

  • An item can be added with a priority (between -9007199254740992 and 9007199254740992)

  • Queues are automatically de-duplicated (duplicate items are voided when pushing them)

  • Multiple items can be popped from the queue at the same time

  • A queue monitoring tool to easily see how many items are in each queue

redis-priority-queue is based on Redis sorted sets and all sorted sets commands can be used alongside this project.

Clients

Basic usage

Bash example

-- Generic
redis-cli --eval src/redis-priority-queue.lua null null , [push|pop|peek|count] my_list (arg1, arg2...)

-- Push an item
redis-cli --eval src/redis-priority-queue.lua null null , push my_super_list my_item

-- Pop an item
redis-cli --eval src/redis-priority-queue.lua null null , pop my_super_list

push: Push an item in a queue

Usage

push my_list item [(int) priority (default: 100)]

Examples

-- Push an item with the default priority (100)
push my_super_list my_item

-- Push an item with a priority of 200
push my_super_list my_item 200

Return

Output is similar to ZADD

pop: Pop an item from the queue

Usage

pop my_list [(string) asc/desc (default: 'desc')] [(int) numer_of_items (default: 1')]

Examples

-- Pop 1 item ordered by descending priority
pop my_super_list

-- Pop 1 item ordered by ascending priority
pop my_super_list asc

-- Pop 5 items ordered by descending priority
pop my_super_list desc 5

Return

Output is similar to ZRANGEBYSCORE

peek: View a set of items from the list

Aliases: list, view

Usage

Same as pop but items are not removed from the list.

count: Count items in a queue

Alias: size

Usage

count my_list [(int) priority_min] [(int) priority_max]

Examples

-- Count all items from the list
count my_super_list

-- Count all items with a priority between 1 and 1110
count my_super_list 1 1110

Return

Output is similar to ZCOUNT

Queue monitoring

The queues can be easily monitored with the Python script src/queue_monitor.py

To use the queue monitor, you need to ensure python is installed and use the following command:

# Installation
pip3 install rpq

# Usage
rpq_monitor

Usage example

# Basic usage
rpq_monitor -H [host] -p [port] (-a [auth] -n [dbnum])
+-------------------+-------+-----------+----------+
| Queue name        | Total | Up to 100 | From 101 |
+-------------------+-------+-----------+----------+
| book_orders       |    44 |        12 |       32 |
| book_recycle      |   223 |       123 |      100 |
| book_returns      |    13 |        13 |        0 |
| late_fees_pending |   112 |        56 |       56 |
| new_books         | 1,144 |     1,120 |       24 |
+-------------------+-------+-----------+----------+

# Specify your own groups
rpq_monitor -H [host] -p [port] (-a [auth] -n [dbnum]) -s "[[0, 1000], [1001, 2000], [2001, 3000]]"
+-------------------+-------+------------+----------------+----------------+
| Queue name        | Total | 0 to 1,000 | 1,001 to 2,000 | 2,001 to 3,000 |
+-------------------+-------+------------+----------------+----------------+
| book_orders       |    44 |         24 |              9 |             11 |
| book_recycle      |   223 |        127 |             40 |             56 |
| book_returns      |    13 |         13 |              0 |              0 |
| late_fees_pending |   112 |         58 |             13 |             41 |
| new_books         | 1,144 |      1,142 |              2 |              0 |
+-------------------+-------+------------+----------------+----------------+

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rpq-1.2.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rpq-1.2-py2.py3-none-any.whl (9.1 kB view details)

Uploaded Python 2Python 3

File details

Details for the file rpq-1.2.tar.gz.

File metadata

  • Download URL: rpq-1.2.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for rpq-1.2.tar.gz
Algorithm Hash digest
SHA256 f42e19def8b5529cf2bf8f8659958e9661db6ca716bb5476ff7cd01bf5c763b4
MD5 cfb46fe5b098e0d7532bf549f2c0b592
BLAKE2b-256 4a52a70ff4f5cc4a09b814ebe0c92ad3767118de8a9daf7d8faa6ba9980eef0d

See more details on using hashes here.

File details

Details for the file rpq-1.2-py2.py3-none-any.whl.

File metadata

  • Download URL: rpq-1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 9.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for rpq-1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 48150c13559e909c51a0536335db70ff9045fc3856a40cac3f9f2feedc0f5e64
MD5 900b4ba0eb2dc3a5574fad6876cfeca9
BLAKE2b-256 1732a3ed419a155640c29538535a571e6554e43e540014b212f35ca4eac23612

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page