Microsoft has announced the public preview of Azure Managed Redis, a fully managed in-memory database service based on Redis Enterprise, which promises to bring capabilities and performance beyond its existing Azure Cache for Redis offering. This new service is designed to help developers build larger, more flexible cloud-native applications, and marks a significant step towards Microsoft's goal of making everything serverless.
Azure CTO Mark Russinovich has emphasized the importance of serverless infrastructure, and Azure Managed Redis is a key component in achieving this goal. The service is built on Redis Enterprise, which provides improved performance and scalability compared to the community edition used in Azure Cache for Redis. This means that developers can now build bigger applications without requiring significant additional infrastructure, making it a more economical and efficient solution.
One of the key limitations of Azure Cache for Redis is its single-threaded database architecture, which leaves compute capabilities on the table. In contrast, Azure Managed Redis uses a new architecture that allows multiple instances to be stacked behind a Redis proxy, with both nodes running a mix of primary and replica processes. This approach enables automatic clustering of data, supports geo-replication across regions, and provides better performance and scalability.
Azure Managed Redis offers two different clustering policies, OSS and Enterprise, which cater to different use cases and performance requirements. The OSS option provides close-to-linear scaling, but requires specific support in client libraries, while the Enterprise option works through a single proxy node, simplifying connection requirements for clients at the expense of performance.
The service is available in four different tiers, each designed to support different use cases and balance cost and performance. The memory-optimized tier is best suited for development and test, with a lower throughput but higher memory-to-vCPU ratio. The balanced option is ideal for most applications, with a 4:1 memory-to-vCPU ratio, while the compute-optimized tier is designed for high-performance applications that require faster processing. Finally, the NVMe flash-optimized tier is intended for applications that need to cache a large amount of data, using flash storage to store less frequently accessed data.
Setting up Azure Managed Redis is relatively straightforward, with options to use the Azure Portal, Azure CLI, Bicep, or PowerShell. Once configured, the service provides a range of modules, including support for search, time-series content, and JSON, although some modules may not be compatible with certain SKUs.
For developers already using Azure Cache for Redis, the transition to Azure Managed Redis should be relatively seamless, with the same Redis clients and query APIs supported. Microsoft recommends the StackExchange.Redis library for .NET developers, and provides a list of client libraries for other languages.
As Azure Managed Redis moves towards general availability, it is likely to have a significant impact on the development of cloud-native applications. Microsoft's cloud-native development frameworks, such as Aspire and Radius, may also add support for automatically configuring Azure Managed Redis alongside their existing Redis support, further streamlining the development process.
In conclusion, Azure Managed Redis represents a significant step forward in Microsoft's cloud-native infrastructure offerings, providing developers with a high-performance in-memory database service that can help them build larger, more flexible applications. With its improved performance, scalability, and ease of use, Azure Managed Redis is likely to become a key component in many cloud-native architectures.