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 | +-------------------+-------+------------+----------------+----------------+
Release files for rpq 2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rpq-2.2.tar.gz | 8.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rpq-2.2-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 16.9 kB
Release files / rpq-2.2.tar.gz
| Download URL | rpq-2.2.tar.gz |
|---|---|
| Size | 8.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5c2c3d2e785b18c7ad21ea485ce429d76c4d4e4d85b0355df424776fe810edd1
|
|
BLAKE2b-256 checksum How to use checksums |
e4e7318af49d6b62df11499720f8acf7f1571c4c175277ae99528b8f5bb07a48
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.5
|
Release files / rpq-2.2-py2.py3-none-any.whl
| Download URL | rpq-2.2-py2.py3-none-any.whl |
|---|---|
| Size | 8.9 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
98180c3220ca83376ac0e12490e82ea1830af6d58eec337a5ae103d5395ec787
|
|
BLAKE2b-256 checksum How to use checksums |
4cac8b782faa809cfc811f9261328e77eca068ac185ef011f0af2a273770cc45
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.5
|