void.cat/VoidCat/Services/Abstractions/ICache.cs

57 lines
1.5 KiB
C#
Raw Normal View History

2022-02-21 22:35:06 +00:00
namespace VoidCat.Services.Abstractions;
2022-06-13 10:29:16 +00:00
/// <summary>
/// Basic KV cache interface
/// </summary>
2022-02-21 22:35:06 +00:00
public interface ICache
{
2022-06-13 10:29:16 +00:00
/// <summary>
/// Get a single object from cache by its key
/// </summary>
/// <param name="key"></param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
2022-02-21 22:35:06 +00:00
ValueTask<T?> Get<T>(string key);
2022-06-13 10:29:16 +00:00
/// <summary>
/// Set the the value of a key in the cache
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="expire"></param>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
2022-02-21 22:35:06 +00:00
ValueTask Set<T>(string key, T value, TimeSpan? expire = null);
2022-06-13 10:29:16 +00:00
/// <summary>
/// Delete an object from the cache
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
ValueTask Delete(string key);
2022-02-21 22:35:06 +00:00
2022-06-13 10:29:16 +00:00
/// <summary>
/// Return a list of items at the specified key
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
2022-02-21 22:35:06 +00:00
ValueTask<string[]> GetList(string key);
2022-06-13 10:29:16 +00:00
/// <summary>
/// Add an item to the list at the specified key
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns></returns>
2022-02-21 22:35:06 +00:00
ValueTask AddToList(string key, string value);
2022-06-13 10:29:16 +00:00
/// <summary>
/// Remove an item from the list at a the specified key
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <returns></returns>
ValueTask RemoveFromList(string key, string value);
2022-02-21 22:35:06 +00:00
}