Redis Services
Provides various Redis functionalities for microservices.
Caching Functionality
The ICacheService interface provides caching operations:
public interface ICacheService
{
Task<T?> GetAsync<T>(string key);
Task<bool> SetAsync<T>(string key, T value, TimeSpan? expiration = null);
Task<bool> RemoveAsync(string key);
Task<bool> ExistsAsync(string key);
Task<bool> SetExpirationAsync(string key, TimeSpan expiration);
Task<TimeSpan?> GetTimeToLiveAsync(string key);
}Queue Functionality
The IQueueService interface provides queue operations:
public interface IQueueService
{
Task EnqueueAsync<T>(string queueName, T item);
Task<T?> DequeueAsync<T>(string queueName);
Task<long> GetLengthAsync(string queueName);
Task<T?> PeekAsync<T>(string queueName);
Task ClearAsync(string queueName);
}Dependency Injection Setup
Add Redis configuration to your appsettings.json:
{
"Redis": {
"ConnectionString": "localhost:6379",
"DatabaseId": 0,
"ConnectTimeout": 60000,
"SyncTimeout": 60000,
"ConnectRetry": 3,
"ReconnectRetryPolicy": 3
}
}In your Program.cs or Startup.cs:
using SharedLibrary.Cache.ServiceCollectionExtensions;
// Add Redis connection
builder.Services.AddRedis(configuration);
// Add Redis cache service
builder.Services.AddRedisCache(configuration);
// Add Redis queue service
builder.Services.AddRedisQueue(configuration);Dependencies
- StackExchange.Redis
- Microsoft.Extensions.DependencyInjection
- Microsoft.Extensions.Configuration
- Microsoft.Extensions.Logging