redis-priority-queue
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 | +-------------------+-------+------------+----------------+----------------+
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| rpq-2.2.tar.gz | 8.0 kB | Without provenance | Details for rpq-2.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| rpq-2.2-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details for rpq-2.2-py2.py3-none-any.whl |
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
|
Security for rpq 2.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.