Common interface to manage cache using different providers.
$ dotnet add package microservice.toolkit.cachemanagerImplementations collections of ICacheManager.
Install-Package microservice.toolkit.cachemanager -Version 2.1.0
dotnet add package microservice.toolkit.cachemanager --version 2.1.0
<PackageReference Include="microservice.toolkit.cachemanager" Version="2.1.0" />
<a name="inmemory"></a> Naif version of an in-memory cache implementation.
How to use:
var manager = new InMemoryCacheManager();
<a name="sqlite"></a> To start using SQLite cache manager, first install the required package:
<PackageReference Include="Microsoft.Data.SQLite" Version="5.0.10" />
Create the table cache:
CREATE TABLE cache(
id TEXT PRIMARY KEY,
value TEXT NOT NULL,
issuedAt INTEGER NOT NULL
);
And instantiate the cache manger:
var dbConnection = new SqliteConnection($"[CONNECTION_STRING]");
var manager = new SQLiteCacheManager(dbConnection);
You can specify value serializer, choose between "Newtonsoft JSON", "" and "" (default).\
Newtonsoft JSON
Install Newtonsoft JSON dependency:
dotnet add package Newtonsoft.Json --version 13.0.2
And use the serializer:
var manager = new SQLiteCacheManager(dbConnection, new NewtonsoftJsonCacheValueSerializer());
System.Text.Json
var manager = new SQLiteCacheManager(dbConnection, new JsonCacheValueSerializer());
XML
var manager = new SQLiteCacheManager(dbConnection, new XmlCacheValueSerializer());
<a name="mysql"></a> To start using MySql cache manager, first install the required package:
<PackageReference Include="MySqlConnector" Version="1.3.12" />
Create the table cache:
CREATE TABLE cache(
id VARCHAR(256) PRIMARY KEY,
value TEXT NOT NULL,
issuedAt BIGINT NOT NULL
);
And instantiate the cache manger:
var dbConnection = new MySqlConnection($"[CONNECTION_STRING]");
var manager = new MysqlCacheManager(dbConnection);
You can specify value serializer, choose between "Newtonsoft JSON", "XML" and "System.Text.Json" (default).\
Newtonsoft JSON
Install Newtonsoft JSON dependency:
dotnet add package Newtonsoft.Json --version 13.0.2
And use the serializer:
var manager = new MysqlCacheManager(dbConnection, new NewtonsoftJsonCacheValueSerializer());
System.Text.Json
var manager = new MysqlCacheManager(dbConnection, new JsonCacheValueSerializer());
XML
var manager = new MysqlCacheManager(dbConnection, new XmlCacheValueSerializer());
<a name="memcached"></a> To start using Memcached cache manager, first install the required package:
<PackageReference Include="Enyim.Memcached2" Version="0.6.8" />
How to use:
var manager = new MemcachedCacheManager("localhost:11211");
Or, if you are using a cluster:
var manager = new MemcachedCacheManager("localhost:11211,localhost:11212");
<a name="redis"></a> To start using Redis cache manager, first install the required package:
<PackageReference Include="StackExchange.Redis" Version="2.2.62" />
How to use:
var manager = new RedisCacheManager("localhost:6379");
You can specify value serializer, choose between "Newtonsoft JSON", "XML" and "System.Text.Json" (default).\
Newtonsoft JSON
Install Newtonsoft JSON dependency:
dotnet add package Newtonsoft.Json --version 13.0.2
And use the serializer:
var manager = new RedisCacheManager("localhost:6379", new NewtonsoftJsonCacheValueSerializer());
System.Text.Json
var manager = new RedisCacheManager("localhost:6379", new JsonCacheValueSerializer());
XML
var manager = new RedisCacheManager("localhost:6379", new XmlCacheValueSerializer());