I’m not sure what you mean by “standard DB queue” (perhaps you mean a message queue, I guess?), but yeah Redis (or really, Valkey, now, since Redis tried to change license on everyone) is a very important tool in the toolbox for system design. In-memory databases trade persistence guarantees for raw throughput, and are very well-suited for different workloads than a traditional database is. It’s great for caching, rate-limiting, realtime analytics, leaderboards… Basically anything with ephemeral data or data that can easily be reconstructed from some other source of truth. It’s an optimization tool that can significantly reduce the load on your primary application database for certain workloads (and achieve higher throughput).
Gotcha, so, as an example, the postgress instance would calculate once the statistics of a view and you’d store that onto redis.
I operate with the logic of “If I don’t know what something is for cut it out and see what breaks” and I’ve yet to really have a need of an in-memory database tho, I think I’d find an use for it for one case where I get deadlocks for data that I really want to be up to date.
Do people have uses for redis? What does it do better than just the standard DB queue?
I’m not sure what you mean by “standard DB queue” (perhaps you mean a message queue, I guess?), but yeah Redis (or really, Valkey, now, since Redis tried to change license on everyone) is a very important tool in the toolbox for system design. In-memory databases trade persistence guarantees for raw throughput, and are very well-suited for different workloads than a traditional database is. It’s great for caching, rate-limiting, realtime analytics, leaderboards… Basically anything with ephemeral data or data that can easily be reconstructed from some other source of truth. It’s an optimization tool that can significantly reduce the load on your primary application database for certain workloads (and achieve higher throughput).
Gotcha, so, as an example, the postgress instance would calculate once the statistics of a view and you’d store that onto redis.
I operate with the logic of “If I don’t know what something is for cut it out and see what breaks” and I’ve yet to really have a need of an in-memory database tho, I think I’d find an use for it for one case where I get deadlocks for data that I really want to be up to date.
It makes a queue without loading the DB.
ACID DBs don’t scale indefinitely, and it’s a very easy win if you are having performance issues even before scaling them.