UnifiedRedisPlatform 1.0.2

dotnet add package UnifiedRedisPlatform --version 1.0.2
NuGet\Install-Package UnifiedRedisPlatform -Version 1.0.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="UnifiedRedisPlatform" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add UnifiedRedisPlatform --version 1.0.2
#r "nuget: UnifiedRedisPlatform, 1.0.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install UnifiedRedisPlatform as a Cake Addin
#addin nuget:?package=UnifiedRedisPlatform&version=1.0.2

// Install UnifiedRedisPlatform as a Cake Tool
#tool nuget:?package=UnifiedRedisPlatform&version=1.0.2

Unified Redis Platform (URP)

Official Documentation

Motivation

With the increase of Cloud Adoption, cost optimization has become a concern for organizations moving to the Cloud. Upon conducting a cost analysis of our Azure Subscriptions, we realized that Azure Caches for Redis were among the highest sources of expenditure. In our ecosystem of Micro-services, each service was using its own isolated Redis Cache for each environment. This is the same of many services and ecosystem across the industry. Furthermore, if you need to satisfy your customer demands of BCDR (Business Continuity Disaster Recovery), you might create replica Redis Caches in alternate regions. In most cases, we analyzed that these Caches were not used up to their full potential (both in terms of load and storage). Our analysis concluded that we were using about 1GB of the P1 Redis Caches. A single P1 cache can store 6GB of data. A single P1 Redis Cache costs around $412 per month. With three micro-services and each service is utilizing two Redis Caches were spending about $2,412 per month.

Such an analysis motivated us to look for opportunities to merge the existing Redis Caches into a single cluster shared by the existing applications. Still, it needed to ensure that each application had proper isolation.

This platform allows multiple application to re-use a single or a cluster of Redis Caches. The platform provides proper isolation required by various apps to operate (get/edit/delete/update cached objects) on a single cluster without interfering (key overrides) with each other.

Capabilities

  1. Consolidate multiple Azure Cache for Redis instances to a single cluster
  2. Automatic key name-spacing for providing isolation between multiple applications
  3. Disaster Recovery by keeping Azure Redis Cache in multiple regions in a single cluster
  4. Multiple read-regions
  5. Geo-replication of data (add/delete/update) across multiple regions
  6. Support for all operations available in StackExchange.Redis library. You can use all methods and data types from StackExchange.Redis without any code change.
  7. Support for auto-retires and timeouts in case of errors
  8. Automatic lazy and singleton connection for preventing connection exhaustion issues
  9. Secure connection using application-specific private Keys
  10. Telemetry support for Redis Key usage, performance reports and failures
  11. Management console for managing keys from backend

Status

CI

Release

Release-Extension-DistributedCache

Build Status

Nuget

Nuget

Getting Started

Install the latest version of the core URP SDK package - UnifiedRedisPlatform

Install-Package UnifiedRedisPlatform

Connect with Redis Cluster by creating a IUnifiedConnecionMultiplexer

IUnifiedConnectionMultiplexer connectionMux = UnifiedConnectionMultiplexer.Connect("Cluster ID", "App ID", "App Secret", preferredLocation: "Location")

Create a IDatabase to interact with the Redis Cache Database. The IDatabase interface is exposed by StackExchange.Redis library.

IDatabase _database = _mux.GetDatabase();

All methods exposed in IDatabase is available in URP

await _database.StringSetAsync(keyName, value);
string value = await _database.StringGetAsync(keyName);

See more details in the WiKi

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on UnifiedRedisPlatform:

Package Downloads
DistributedCache.Extensions.UnifiedRedisPlatform

Distributed cache implementation of Microsoft.Extensions.Caching.Distributed.IDistributedCache using Unified Redis Platform

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.2 2,183 4/17/2021
1.0.1 285 4/17/2021
1.0.0 308 4/17/2021

Fixed get keys by pattern