Reputation: 15626
I have not used Redis yet, but I have heard about it and plan to try using it for caching data.
I have heard that Redis uses memory as a cache store database. What's the point of Redis, since I can use an object or dictionary to store data? Like this:
var cache = {
key: {
},
key: {
}
...
}
What are the advantages of using Redis?
Upvotes: 231
Views: 110550
Reputation: 506
My team likes using serverless architecture, where each request can go to a different container. In this case Redis can play a very important role.
We can't use a simple cache in serverless because we can't be sure our request will get served by the same container where our simple cache is stored. Redis is a good solution because it stores the cache at a remote location. We can access Redis from anywhere.
Upvotes: 20
Reputation: 73206
Redis is a remote data structure server. It is certainly slower than just storing the data in local memory (since it involves socket roundtrips to fetch/store the data). However, it also brings some interesting properties:
Redis can be accessed by all the processes of your applications, possibly running on several nodes (something local memory cannot achieve).
Redis memory storage is quite efficient, and done in a separate process. If the application runs on a platform whose memory is garbage collected (node.js, java, etc ...), it allows handling a much bigger memory cache/store. In practice, very large heaps do not perform well with garbage collected languages.
Redis can persist the data on disk if needed.
Redis is a bit more than a simple cache: it provides various data structures, various item eviction policies, blocking queues, pub/sub, atomicity, Lua scripting, etc ...
Redis can replicate its activity with a master/slave mechanism in order to implement high-availability.
Basically, if you need your application to scale on several nodes sharing the same data, then something like Redis (or any other remote key/value store) will be required.
Upvotes: 352