Open umar-ulabs opened 1 year ago
@umar-ulabs Thanks for your interest in this project.
Based on your description, one global service is enough.
But if you want to separate them, you can use IEasyCachingFactory
to get providers with different configuration.
Here is an example,
services.AddEasyCaching(option =>
{
option..WithMessagePack("mymsgpack");
option.UseRedis(config =>
{
config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6379));
config.SerializerName = "mymsgpack";
}, "tenant-a");
option.UseRedis(config =>
{
config.DBConfig.Endpoints.Add(new ServerEndPoint("127.0.0.1", 6380));
config.SerializerName = "mymsgpack";
}, "tenant-b");
});
// get IEasyCachingProviderFactory
var factory = app.ApplicationServices.GetRequiredService<EasyCaching.Core.IEasyCachingProviderFactory>();
// get provider with different tenant
var provider = factory.GetCachingProvider("tenant-a");
// call methods
provider.xxxx
So essentially I can add easycache per tenant? thanks. I hesitated doing that because if I have 500 tenants it will add/maintain 500 instances of easycache. As long as its ok. I would love to add it, rather than passing tenant id for each methods.
@umar-ulabs
You handle it better with the cache key
Like key
${Tenant}:xxxx...
I been using EasyCaching by adding one global instance and passing tenant id as Key (to isolate data) to each caching method. If I add EasyCaching service per tenant scope. So each tenant will get full EasyCaching instance, will that be better or one global service is enough? Thanks for your insights.