Skip to content

Redis Streams

Redis is an open-source, BSD-licensed, in-memory data structure store used as a database, cache, and message broker.

Redis Streams is a new data type introduced in Redis 5.0 that models a log data structure in an abstract way using an append-only data structure.

Redis Streams can be used in CAP as a message transporter.

Configuration

To use Redis Streams as a transporter, you need to install the following package from NuGet:

PM> Install-Package DotNetCore.CAP.RedisStreams

Then you can add configuration items to the ConfigureServices method of Startup.cs.

public void ConfigureServices(IServiceCollection services)
{
    services.AddCap(capOptions =>
    {
        capOptions.UseRedis(redisOptions=>{
            //redisOptions
        });
    });
}

Redis Streams Options

Redis Streams configuration parameters provided by CAP:

NAME DESCRIPTION TYPE DEFAULT
Configuration redis connection configuration (StackExchange.Redis) ConfigurationOptions ConfigurationOptions
StreamEntriesCount number of entries returned from a stream while reading uint 10
ConnectionPoolSize number of connections pool uint 10
OnConsumeError callback function that will be invoked when an error occurred during message consumption. Func null
#### Redis Configuration Options

If you need additional native Redis configuration options, you can set them in the Configuration option:

services.AddCap(capOptions => 
{
    capOptions.UseRedis(redisOptions=>
    {
        // redis options.
        redisOptions.Configuration.EndPoints.Add(IPAddress.Loopback, 0);
    });
});

Configuration is a StackExchange.Redis ConfigurationOptions. You can find more details at this link.

Streams Cleanup Notes

Since Redis Streams does not support deleting all messages that have been acknowledged by all groups (see Redis issue), you should consider using a script to periodically delete old messages.