u/Perfect-Birthday-889

▲ 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.

reddit.com
u/Perfect-Birthday-889 — 8 days ago