Azure Redis Cache is a managed version of the popular open source version of Redis Cache which makes it easy for you to add Redis into your applications that are running in Azure. Redis is an in-memory database where data is stored as a key-value pair so the keys can contain data structures like strings, hashes, and lists. You can cache information in Redis and can easily read it out because it is easier to work with memory than it is to go from the disk and talk to a SQL Server.
- Suppose, we have a web server where your web application is running. The back-end has SQL Server implementation where the SQL Server is running on a VM or maybe it is an Azure SQL database.
- A user comes to your application and they go to a page that has tons of products on it.
- Now, that page has to go to the database to retrieve the information and then that gets sent back to the web server and gets delivered to the user. But if you have thousands of users hitting that web page and you are constantly hitting the database server, it gets very inefficient.
- The solution to this is to add Azure Redis Cache and we can cache all of those read operations that are taking place. So, that goes to an in-memory database on the Azure Redis Cache.
- When other users come back and look for the same information on the web app, it gets retrieved right out of the Azure Redis Cache very quickly and hence we take the pressure of the back-end database server.
While deploying Azure Redis Cache, we can deploy it with a single node, we can deploy it in a different pricing tier with a two node implementation and we can also build an entire cluster with multiple nodes.
Let us go ahead and see how we can deploy the Azure Redis Cache.
- Head over the Azure Portal and click on "Create a Resource". Select Redis Cache under the Databases category.
- Give a DNS name, select the subscription, create a new resource group, and select the Premium P1 pricing tier.
- Keep Redis Cluster, Redis Data persistence and Virtual Network as not configured. We'll look into that later on. Click on create.
- Azure Redis Cache is an in-memory database and that means if there is a hardware failure, there is a potential for data loss.
- So with the basic pricing tier, you can have just a single node and if that fails, you have got no persistence of the data. The case is the same as the standard tier.
- If you want to be able to do persistence and recover from some kind of hardware failure, you will have to use a premium pricing tier implementation, the kind of one that we have used here in the demo.
- Once the Redis Cache gets created, go to the resource and you will find the Redis data persistence tab on the left.
- Currently, it is disabled since we didn't configure it at the time of creating the resource. But other than that, we have got two more options for data persistence. One is RDB - Redis Database Persistence and AOF - Append the Only File.
- With the AOF, every write into the Redis Cache implementation is going to get appended into this backup every second. So in a catastrophe, you could rebuild the cache based off of this backup. And there is a less data loss with AOF versus the RDB option.
- RDB gives you good compression on the data. You are going to get a Redis binary formatted snapshot to a disk in your Azure storage account. It is going to be on a schedule that you define. So basically that is a snapshot that gets up in there, and in the case of a catastrophic event, you could recover your Redis Cache from that snapshot and restructure all of your information and get your cache reloaded.
- Select RDB option, keep the backup frequency as 60 minutes and select the storage account. Here I had already created a storage account. You can create one if you don't have one already. We will use primary key by default. Click on OK and it will implement your Redis data persistence.
- Suppose your servers that want to access the Azure Redis Cache are already running on Virtual Machines, inside a virtual network. Let us see how we can build an Azure Redis Cache that is isolated at the network level. For that, we will start off by creating a virtual machine (Windows Server 2016 Datacenter). Configure the basic settings as shown in the image and click on OK.
- For the virtual machine size, choose DS1_V2.
- Keep everything default in the optional features. This will create a virtual network by default, with a default subnet and a public IP address. Keep the network security group as advanced so that you don't have to select the inbound ports. Click on OK.
- Click on create.
- Once it gets created and configured, go to the resource group and click on the virtual network.
- In the virtual network, go to the Address space tab on the left and add one more address space 10.0.1.0/24 and click on Save.
- Then, go to the Subnets tab and click on Add a Subnet.
- Give name to the subnet. Select the address space that we just created. Keep everything else as default and click on OK.
- We'll have our subnet created. We'll deploy our Azure Redis Cache into this subnet and we'll still be able to communicate with it from our local development machine. But in the real world, that other subnet might have our web servers in it, those servers can talk to the Redis Cache over that private connection and we don't have to expose it out to the public internet.
- Create a new Redis Cache. Give a DNS name. Select the subscription and use the existing resource group in which we created the VM. For pricing tier, choose P1 Premium since it supports virtual network.
- Down below, choose the virtual network, select the subnet that we created and assign a static IP address. Click on OK.
- Tick the checkboxes and click on Create.
- Once the Redis Cache gets deployed, connect to the Virtual Machine that you had created via RDP connection.
- Once inside the VM, open PowerShell and run the nslookup command.
- Next, go to your Redis Cache and copy the hostname that you had given.
- Paste that in PowerShell in the running VM. You can see that DNS is resolving to the private address inside the virtual network, so 10.0.1.20, the static address that we gave internally to the Azure Redis Cache.
- So that was the process of setting up an isolated Azure Redis Cache in a virtual network. Now let us see how we can enable a cluster for our Redis Cache. You will have to use a premium tier pricing plan in order to get the clustering support and you also need to enable cluster as you build Azure Redis Cache because you cannot change it after it has been created.
- Redis Cache has a concept of shard count. Shard count means on the backend, Azure is going to set up a primary replica model and each shard is going to have a primary and a replica pair and the replication for that is going to be managed by Microsoft. You are going to have a redundant cluster and when you increase the shard count, the memory also increases linearly i.e. 2 shards --> 12 GB, 3 shards --> 18 GB. It is okay even if you don't perform the demo of the next image since this was just for understanding the purpose.
So this is what Azure Redis Cache is and this is how you can implement it with the help of the Azure portal.