What is Redis ?
Redis stands for (RE)mote (DI)ctionary (S)erver. It is a caching server. It is a key-value based in-memory caching server. It is enterprise grade and can be used in many use cases such as database, message broker, session storage, etc. It is very popular for Key-Value storage. It supports a large number of data types such as string, list, sets,etc. We use a caching server to improve the application performance. It supports a good number of memory management techniques such as eviction policies and Time to Live (TTL) for Keys.
For more details refer to
here.
It is available in the cloud. Cloud offerings are very much scalable. It is available in the form of the following variants:
- Azure Cache for Redis
- Amazon ElastiCache for Redis
- In GCP, Memorystore for Redis
Why Redis in Docker Image?
Docker is used in a Microservices based architecture.This Docker Image can be deployed in one go that will be used by other Microservices, we can use the docker image of Redis along with other Microservices. The deployment can be done using Docker composer or Kubernetes.
When developing/testing an application, docker image can get your redis server up and running with a few commands. If you wish to use the same in production scenarios you must understand the security section mentioned in
here. Now, let’s get started with Hands-on from the next section.
Setting up Docker Image
Write the following commands below. This will pull the docker image from docker hub and expose the Redis server inside docker image available at 6379 to host on port number 1919. The name of the docker image we are creating is “redis-local”.
docker pull redis
docker run --name redis-local -dp 1919:6379 redis
Connecting Redis through .NET Application
Now, create a .NET Application and install this nuget package “StackExchange.Redis”.
The code shown below will create the connection and set the key in Redis server. This code will be used to validate the connection if Redis Image is able to communicate with external services.
- ConnectionMultiplexer connection = ConnectionMultiplexer.Connect("localhost:1919");
- var db = connection.GetDatabase();
- db.StringSet("AKey", "AValue");
Other common operations,
var keyVal = db.StringGet("<KeyName>");
|
To Get Key
|
db.KeyExists("<KeyName>")
|
To Check if Key Exists
|
db.KeyExpire("<KeyName>",new TimeSpan(0,1,0));
|
Set Expiry for Key to 1 Min 0 Sec
|
db.KeyDelete("<KeyName>")
|
To Delete Key
|
Validating the Key in Server
Now, switch back to cli and run the following commands. This will connect to the bash shell inside the docker image that is already running with the name “redis-local”. After this we will execute the command “redis-cli” to connect to redis server. Then, we will execute the “get <keyname>” command to get the redis key value.
docker exec -it redis-local /bin/bash
redis-cli
get AKey
Output will be “AValue”
Screenshot for reference,
Now, we have verified that Docker image of Redis is working correctly. This covers the scope of this tutorial.
Other common commands,
set <KeyName> <KeyValue>
|
Used to set key in Redis Server
|
TTL <KeyName>
|
Used to get Time To Live of particular key
|
FLUSHALL
|
To Clean the Redis Server Data
|
Ping
|
To Check of server is responding to events
|
DEL <KeyName>
|
To Delete Key from Redis Server
|
More commands are available at
here.
Summary
We have covered the following things,
- Setting up Redis Docker image in the local system.
- Adding Redis Client package in .NET Application and sending test data.
- Verifying test data in Redis Server inside docker image.