Hacker News new | ask | show | jobs
by worldsayshi 1395 days ago
"But you can go very far without them by using the DB or redis as your message queue."

So, you can go very far without a message queue... by using a simpler message queue?

3 comments

I mean, at some point you have to consider something a "proper" message queue. Otherwise, at the lower extreme your web server would act as a message queue.
"Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker"

Lets draw the line somewhere the other side of applications that advertise themselves as having that function?

The number of people that think that Redis is a KV store and nothing else is too damn high.
Redis is not a database. it doesn’t have proper transaction support.

it’s basically a cache with a fancy API so you can incrementally update data structure instead of having to constantly write the whole thing you are trying to cache.

Sure it is! Redis is even fully ACID if you use the right persistence settings complete with transactions support and a WAL. You can even set up locking to abort/rollback transactions. In DB parlance Redis’ isolation level is strict serializability which is stronger than Postgres.

If you mean “it doesn’t have every feature of Postgres” and behaves a little differently then sure but it absolutely is a database.

the only way to do an "atomic increment operation" is to use the "Watch" command or to write stored procedure.

Watch is a poor man transaction and stored procedure does not work when you need to read value interactively from somewhere else (user/filesystem/another database) while inside a transaction.

Actually a more complicated message queue, because it's on you to implement all the queueing logic. Then back it by a potentially non-durable data store (its very tricky to get redis durable and ha) with no monitoring?

All of this to avoid spinning up an SQS queue?

Isn't that a bit of an odd wording though. Of course if you only buy the horse without the cart you have to build the cart, making "your" solution more complicated. But you still bought the "simpler" solution i.e. the horse without a cart.
Complexity may be the wrong word, but what I mean is surface area for bugs you are responsible for.

I also question whether you really bought a horse in this analogy.

By using something you're already using.