What is Redis (Remote Dictionary Server) on 2022. What can we do with it. How to scale. How to run it on the cloud.
What is Redis?
Redis is a key value store, just like a hash table. It can be used in-memory as cache and data will not be persisted or it can persist the data and be use as data storage. Keys can have a length to up to 512 MB.
It can also be used as a message queue / message broker.
Supported data types
Redis supports several data types
|Strings||512 MB||Bytes, text, serialized objects, binary arrays|
|Lists||2^32 - 1 (4,294,967,295) elements.||Linked list of Redis Strings|
|Sets||2^32 - 1 (4,294,967,295) members.||Unordered unique Redis Strings|
|Sorted Sets||Not specified||Every String has also an integer weight that you must set up|
|Hashes||4,294,967,295 (2^32 - 1) field-value pairs||Hash table|
|Streams||Not specified||Used to track real time events and allows consumers and consumer groups to read them|
Special use cases types
Allows to store coordinates and perform operations such as finding the closest one.
Not gonna even try to summarize this one, read this instead.
Use a String like a bit vector, allows performing bitwise operations.
Allows storing, atomic read, write and read operations for 1 bit unsigned integers to 63 signed bit integers.
Adds facilities to store json documents and adds operations to be able to access / update fields using JSONPath.
A graph database.
Module that adds a time series data structure to Redis, allowing querying by start / end time.
Probabilistic data structures.
Visual support that helps optimizing your stuff on Redis.
We can use Redis to create channels, send messages to the channels and have subscribers that recive the message.
Redis on the cloud
We can use a hosted service using the offer from Redis on Redis Cloud.
Or you can install it following guides detailed here.
AWS only supports Redis as an in memmory database, but you could try to install it on a service like EC2 and put a separate storage to persist.
Google cloud platform currently does not suppert persisting the data out of the box.
Apparently you can persist using out of the box redis services on azure, but they dont recomend it.
You can scale horizontally using Redis Cluster where you have a master that replicates the information between replicas, but it doesn’t guarantees that you are not going to lose data, if you are unlucky that a replica is randomly selected as master and then it goes down before propagating the changes, it can lose data, unless you configure it so that the master has to acknowledge having replicated the information, but then you have to accept a hit on your performance.
Redis recomends that redis is only used on trusted environments where only trusted clients can access it.