▲ 0 r/redis
I’m building at-least-once delivery over Redis lists using LMOVE + Lua — looking for design feedback
Hey r/redis,
I’m experimenting with a Go project called Moxy. The goal is to add reliability semantics on top of Redis queues without turning Redis into a full broker.
The problem I’m trying to solve is the classic:
LPOP queue
If a worker crashes after receiving the task, the task is gone.
Right now the model looks like:
READY -> PROCESSING -> COMPLETED
READY -> PROCESSING -> EXPIRED -> REQUEUED -> READY
Current Redis approach:
- ready list + processing list
- LMOVE ready processing RIGHT LEFT
- Lua scripts for Complete/Requeue
- Go lease engine tracking expirations and ACKs
Still early:
- no TCP/RESP layer yet
- no WAL/snapshots/crash recovery yet
- still single-node
Main thing I’m looking for feedback on:
- Does the READY/PROCESSING list model still make sense today?
- Is LMOVE + Lua a sane direction before moving to something more advanced?
- Would you use Redis Streams for this instead?
- What Redis-specific failure cases should I think about before building the network layer?
Mostly looking for architecture feedback from people who’ve used Redis heavily in production.
u/Perfect-Birthday-889 — 8 days ago