namespace Core.Blueprint.Redis
{
///
/// Interface for managing Redis cache operations.
///
public interface IRedisCacheProvider
{
///
/// Retrieves a cache item by its key.
///
/// The type of the cached item.
/// The cache key.
/// The cached item, or default if not found.
ValueTask GetAsync(string key);
///
/// Sets a cache item with the specified key and value.
///
/// The type of the item to cache.
/// The cache key.
/// The item to cache.
/// The optional expiration time for the cache item.
/// A task representing the asynchronous operation.
ValueTask SetAsync(string key, TEntity value, TimeSpan? expiry = null);
///
/// Removes a cache item by its key.
///
/// The cache key.
/// A task representing the asynchronous operation.
ValueTask RemoveAsync(string key);
///
/// Checks if a cache item exists for the specified key.
///
/// The cache key.
/// True if the cache item exists; otherwise, false.
ValueTask ExistsAsync(string key);
///
/// Refreshes the expiration time of a cache item if it exists.
///
/// The cache key.
/// The new expiration time for the cache item.
/// A task representing the asynchronous operation.
ValueTask RefreshAsync(string key, TimeSpan? expiry = null);
}
}