 Hello everyone and thank you for watching this video. My name is Pranav Rastogi and I'm a Program Manager on Azure Redis Cache. I'm super excited to talk to you about some of the new enhancements that we are offering for Azure Redis Cache. Here is my contact details in case you want to get in touch with you. So today we'll be talking to you about what's Redis, what are we offering in Azure Redis, and some of the new enhancements that we've just rolled out to public. So Redis, as you must be knowing, is an open-source platform which has many use cases. The simplest way is it's a traditional database doing computations in memory. Redis is super fast. It also exposes data structures that are accessed in memory via set of commands. So you can do scenarios around leaderboard where you can show the top five gamers. Redis therefore is more than a cache where you can store in-memory data and also retrieve it in a fast manner. Redis is also used as a messaging system. So for a PubSub application or if you're building SignalR-based real-time applications and you want to scale out, Redis is one of the recommended backplains that you can use, simply because Redis offers a very high throughput, low latency access to data. What we are offering in Azure is pretty much the open-source Redis. It's a hosted and managed offering by Microsoft where when you create a new Redis cache, we host the cache on a VM, and then we manage the cache for you. So you don't have to worry about the details of the infrastructure when dispatching happen, and you can focus more on your client applications. It is a dedicated offering, so that means each cache gets its own machine. It's not a shared offering. Caches are available in different sizes, so you can create from 256 megs to 53 gigs. Now with the more recent enhancements with Redis cluster being offered, you can create caches up to 530 cache size up to 530 gigs and even more available on request. Redis is available in all regions in Azure. More recently, we've also offered Redis in China and US government and we'll keep offering it in other regions as and when they come. So Redis is available globally in Azure. In Azure, we do support SSL. So when you connect to Redis, there's an SSL endpoint that you can connect to. It's a unique offering that's only available in Azure. As of today, Redis on Azure is available in three size in three tiers. There's the basic tier which is a single node cache only. So you get a endpoint that you can talk to. There's no SLA. If the node goes down, then you will lose the data as well. The basic tier is mostly recommended for a development and a test scenario only. The standard tier is a two node cache where we from a cache service perspective will handle the replication failover ourselves, and you don't have to worry about it. Standard tier is the tier we offer an SLA of three nines on the availability of the cache. So the cache is available 99.9 percent of the time. We've just introduced the premium tier, which has all the features of the standard tier and more. So let's take a quick look at some of the features of the premium tier. So this tier is an enterprise ready tier which includes a lot more features. So there's better performance as compared to standard or basic tier. So there's higher throughput. These machines are deployed on better hardware. So they have faster CPUs and it had an inherently the performance on the premium tier is much better than standard or basic. We support Redis persistence. So Redis persistence is the Redis persistence feature which is offered in the open source platform, which is what we're offering in Azure. It allows you to persist the data stored in Redis to a backend store and in Azure, the backend store will be Azure storage. You can configure different persistence options such as the snapshot RDB model or the AOF append only file model. We also support Redis cluster which was recently G8 in the Redis open source platform as well. Again, it's the same offering. So now you can create a cluster which is effectively allows to do server-side sharding of your data. So it gives you better throughput as you increase the number of shards. Each shard in a Redis cluster has a master slave setup. So we automatically from a cash service perspective handle the replication between the master and the slave. So again, you don't have to worry about maintaining the cluster yourself. Lastly, you can deploy Redis caches inside an Azure Virtual Network. So you can define network topologies where you can now have your compute layer which could be an Azure Web App or an Azure VM, and your Redis cache inside the same Virtual Network, so that nobody outside of the Virtual Network can have access to the cache itself. So you can further have network isolation and protect who can access the cache. So now that we've seen a quick overview of these features, let's dive in and see how can we create a cache and use these new features. Now that you've had a quick overview of the new features, let's see how can we create a new Redis cache with clustering, persistence, and Virtual Network. So here I'm in the Azure preview portal, and I can go to data and storage. That's where Redis cache would show up. So to create a new cache, you would specify a cache name, which is your DNS name. You satisfy the subscription, the resource group where you put your cache in, location, and then for utilizing all the new features, we've introduced our premium tier which has all these features. So you can select the premium tier, and then you can enable clustering. So clustering is now Redis server-side sharding where it's gonna shard the data across different nodes that you have in a cluster. So I can create a cluster of up to 10 shards. And then if you say the total size I can store in the cluster is 60 gigs. So that's 10 into six. And each shard is a master safe pair where the cache service does the replication between the master and the slave. So you can create a cluster, you can optionally enable persistence as well. So persistence allows you to persist the data in Redis which is in memory to a persistent store which is Azure storage in our case. You can specify a backup frequency on how often do you wanna backup your cache data like 60 minutes, six hours, 12 hours, 24 hours. And then you can specify the storage account that you want to use. Premium storage is recommended for better performance. The storage account needs to be in the same region as the cache is in. So you can optionally enable persistence as well. You can also deploy the cache inside a virtual network. So this is an environment where you have your web app or your VM in a virtual network and you put your cache inside the same virtual network so the cache cannot be accessed from any resource outside the virtual network as well. Again, the virtual network has to be in the same region as the cache. So we have some validations in the portal that we do for you. So once you choose all these settings then you can also say create and that's where it's gonna go ahead and create the cache for you. So I've already, this takes a few minutes and I've already gone ahead and created a cache. So let's see how we can use a cache inside a virtual network. So I'll switch back to my application over here. It's an ASP.NET 5 application but it's using the Stack Exchange where it's a client. Again, in Azure we're just hosting the open source Redis so you can use any of the clients that are listed in Redis.io slash clients be it Node, PHP, C, C++ and use Azure Redis cache itself. So here I'm connecting to my cache which I just had previously created and I'm specifying the private static IP which is the IP of this cache inside the virtual network. So only clients that are inside the virtual network can connect to this cache as well. So if I go to command line and I say DNX web where I'm running this application this application will then try to connect to the cache endpoint and eventually it will fail because here I'm running the client locally on my box where I'm trying to connect to the cache which is inside a virtual network. So I get this exception. Then to see this demo working what I have is I have this web application where I've deployed my web application which connects to the cache and this web application if we go to the networking section it has a VNet integration and it's loading the details of the virtual network. This virtual network is the same virtual network where I've deployed my cache and then since both the cache and the website are inside the same virtual network I can just browse to this website. It's gonna try to connect to the cache and here I'll get the data that I've stored in the cache which is the current date time and I sort of refresh the page. So this is now coming from the cache itself. Whereas if I were to go to the networking settings again and I can disconnect this website from the virtual network. So let's bring up the networking section. It will load up the details of the virtual network as well and I can disconnect over here. So click here to configure. I can say disconnect. So this will remove this web application from the virtual network. And if I hit browse again this web application will try to connect to the Redis cache which is inside the virtual network and since now the web app is outside the virtual network it will fail to connect to the cache and then I'll get an exception saying that this cache cannot be connected to basically because the connections are coming from outside the virtual network. So it's usually the default timeouts are about five. So it's gonna take some time before this request fails but I just wanted to show you that if you connect to the cache from outside the virtual network request will fail. So let's see another example where what I've also done is here is a cache where I have created a cluster. So I just wanted to show you how can you monitor a cache where you have created a cluster as well. What I'm showing you now is an example of a cache which is a clustered cache. And if you see the pricing tier it's a clustered cache which stores 18 gigs of data. It has three shards. Each shard stores about six GB and that's why you get 18 gigs. So let's look at sort of gets and sets. So in the monitoring aspect the performance counters that we show we show the performance counters for the entire cluster and also per shard. And the reason this is useful is because you can connect to each shard individually as well. And you can when you store your data in a cluster like Redis has some recommended best practices on how can you partition the data so that data evenly distributed inside a cluster. So let's say you can have keys which have customer colon one to 10 and they could land up in shard one. And you can have keys which have customer colon 10 to 20 and they could land on shard two. And so that's why you get evenly spreading out your load and as you increase the number of shards inside a cluster your throughput increases linearly as well. So for a P4 cache let's say the throughput is about 250K ops per second for a single shard. If you put 10 shards in you'll get about 2.5 million ops per second. So it increases linearly. So in this graph basically we're seeing the get trend. The total get over the last past week was 213 zero from shard zero one from shard one and two one two from shard two. And you will see some details as well in this table. So now you can monitor get sets per shard as well. You can also monitor like all the perf counters that we have use memory CPU Redis server load. And you can sort of monitor the health of the cluster as well. So this was a quick overview of some of the new features that we've introduced in the premium tier which is around a better performance, Redis cluster, Redis persistence and deploying Redis inside a virtual network. Now that you've seen these features in action here are some resources on sort of getting started with these features. You can learn more about these features. You can figure out what the pricing is. It has links to best patterns and practices on cache. I hope you really enjoyed these features and are super excited. I would love to hear feedback on Azure Redis cache. Please feel free to reach out to me. Thank you.