Orleans is a framework that provides a straight-forward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns.
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.
Orleans.Redis is a package that use Redis as a backend for Orleans providers. It uses the great StackExchange.Redis library underneath.
PS> Install-Package Orleans.Persistence.Redis -prerelease
Configure your Orleans-cluster.
var silo = new SiloHostBuilder()
.AddRedisGrainStorage("Redis", optionsBuilder => optionsBuilder.Configure(options =>
{
options.DataConnectionString = "localhost:6379"; // This is the deafult
options.UseJson = true;
options.DatabaseNumber = 1;
}))
.Build();
await silo.StartAsync();
Decorate your grain classes with the StorageProvider
attribute.
[StorageProvider(ProviderName = "Redis")]
public class SomeGrain : Grain<SomeGrainState>, ISomeGrain
These settings will enable the redis cache to act as the store for grains that have
- State
- Need to persist their state
- DataConnectionString="..." (required) the connection string to your redis database (i.e.
localhost:6379
, is passed directly to StackExchange.Redis) - UseJson=true/false (optional) wether or not to persist state as a JSON string or not. Defaults to
false
- DatabaseNumber=1 (optional) the number of the redis database to connect to. Defaults
MIT