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

Type Max Size Description
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.

Additional support

RedisJSON

Adds facilities to store json documents and adds operations to be able to access / update fields using JSONPath.

RedisGraph

A graph database.

RedisTimeSeries

Module that adds a time series data structure to Redis, allowing querying by start / end time.

RedisBloom

Probabilistic data structures.

RedisInsight

Visual support that helps optimizing your stuff on Redis.

Message queues with Redis Pub/Sub

We can use Redis to create channels, send messages to the channels and have subscribers that recive the message.

Redis on the cloud

redis 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

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.

gcp

Google cloud platform currently does not suppert persisting the data out of the box.

azure

Apparently you can persist using out of the box redis services on azure, but they dont recomend it.

Scalabity

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.

Security

Redis recomends that redis is only used on trusted environments where only trusted clients can access it.