3 ms·
You know what performs better than redis in this setup? An hashmap. Why Postgres wouldn’t run on the same server as the app? It’s actually pretty common.
by Eikon 2y ago
You know what performs better than redis in this setup? An hashmap.
Why Postgres wouldn’t run on the same server as the app? It’s actually pretty common.
- secondcoming 2y agoThere's more to redis than just being a K/V store.
- Eikon 2y agoThere’s more data structures in your favorite language std lib than an hashmap, at least, I hope so :)
- ummonk 2y agoLike?
- strken 2y agoPerhaps you could elaborate? It would be helpful to understand what Redis can do that cannot be done easily with local memory. Acting as shared memory for an inherently single-CPU language like JS is one I can think of. However, I don't use Redis, so you'd be better placed to drive the discussion forward with examples.
- shakow 2y ago> Perhaps you could elaborate? IPC, I suppose?
- quantadev 2y agoI have Docker running in swarm mode where it will spin up multiple load balanced instances of my web app (where requests can get routed randomly to any instance). So I use Redis to store "User Session Information" so the session can be read/written from any instance, supposedly faster than using a DB.
- mperham 2y agoRedis provides low-level persistent data structures which can be used to implement business logic distributed safely across a number of machines. That’s a LOT harder than in-memory in-process. My Sidekiq background job system runs entirely on top of Redis. Structures like Sorted Sets become the basis for indexes. Lists provide extremely fast queue behavior and Hashes map easily to persistent objects. Databases, traditionally, have not performed well when used as queues. Those are the big 3 structures necessary to implement anything: trees, lists and maps.
- strken 2y agoI'm a bit confused here, because the original comment was that "most people will never really see the point of Redis, which is that if it is running on the same machine as the application, it can respond in much less than a millisecond", to which the response was "there's more to redis than just being a K/V store". I do see the point of Redis if you have multiple hosts, but I was unsure why someone would use it on just one host.
- chipdart 2y ago> There's more to redis than just being a K/V store. That's perfectly fine. You can compare Redis to other specialized tools just like you can compare it with Postgres and SQLite.
- secretmark 2y agoWhat if there are multiple processes that require access to a shared cache?
- mbreese 2y agoAnd I think this is the main use case they were looking for. If you have a web app where each request is a separate process/call (not uncommon), and you don’t have a good shared global state, Redis is a great tool. It is an in-memory data structure store that can respond to requests from different processes. I always considered it an evolution from memcached. If you only have one long lived process or good global variable control, then it is much less appealing in the single-server scenario. Similarly, if you require access from multiple hosts, it becomes a less obvious choice (especially if you already have a database in the loop). And redis is also overkill is you’re using it only as a cache.
- xxs 2y ago>shared cache As in performance improvement - cache should never be considered a datastore, e.g. you can pull the plug and nothing else happens (aside losing performance). It'd be a lot more beneficial all the processes to have a local cache, themselves. The latter is at least 4 orders of magnitude faster than redis. Now you may like some partitioning, too.