LiteDb.Extensions.Caching
2.5.1
dotnet add package LiteDb.Extensions.Caching --version 2.5.1
NuGet\Install-Package LiteDb.Extensions.Caching -Version 2.5.1
<PackageReference Include="LiteDb.Extensions.Caching" Version="2.5.1" />
paket add LiteDb.Extensions.Caching --version 2.5.1
#r "nuget: LiteDb.Extensions.Caching, 2.5.1"
// Install LiteDb.Extensions.Caching as a Cake Addin #addin nuget:?package=LiteDb.Extensions.Caching&version=2.5.1 // Install LiteDb.Extensions.Caching as a Cake Tool #tool nuget:?package=LiteDb.Extensions.Caching&version=2.5.1
LiteDb.Extensions.Caching
An IDistributedCache
implementation for LiteDB.
Usage
Registering the cache:
IServiceCollection services = //...
services.AddLiteDbCache("MyCache.db")
// or
services.AddLiteDbCache("MyCache.db", "MySuperStrongPassword1111!!!")
// or
services.AddLiteDbCache(options =>
{
options.CachePath = "MyCache.db";
options.Password = "MySuperStrongPassword1111!!!";
});
After this the IDistributedCache
can be used as usual;
Fine controls
The package also allows you to have some manual controls for managing the cache through the ILiteDbCache
interface:
public interface ILiteDbCache : IDistributedCache
{
int CacheItemCount();
Task<int> CacheCountAsync(CancellationToken cancellationToken = default);
void Clear();
Task ClearAsync(CancellationToken cancellationToke = default);
ulong CacheSizeInBytes();
Task<ulong> CacheSizeInBytesAsync();
}
Multi level cache
The library also adds a multi level cache implementation through the IMultiLevelCache
interface, which first tries to retrieve an object from the IMemoryCache
, then from the IDistributedCache
. For serialization it uses System.Text.Json
. Another string-based serializer can be used by implementing the IMultiLevelCacheSerializer
interface and then registering it through DI.
var key = Guid.NewGuid().ToString();
var value = new TestData(Guid.NewGuid().ToString());
var storedValue = await MultiLevelCache.GetOrSetAsync(key, (_) => Task.FromResult(value), new MemoryCacheEntryOptions(), new DistributedCacheEntryOptions());
Contributing
Issues and pull requests are welcome.
If you find a bug, please try to recreate it with a test case in the test project and put it in the newly created issue (not mandatory)
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- AsyncKeyedLock (>= 6.1.1)
- LiteDB (>= 5.0.15)
- Microsoft.Extensions.Caching.Abstractions (>= 2.2.0)
- Microsoft.Extensions.Caching.Memory (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 2.2.0)
- Microsoft.Extensions.Options (>= 2.2.0)
- System.Text.Json (>= 4.6.0)
-
net6.0
- AsyncKeyedLock (>= 6.1.1)
- LiteDB (>= 5.0.15)
- Microsoft.Extensions.Caching.Abstractions (>= 2.2.0)
- Microsoft.Extensions.Caching.Memory (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 2.2.0)
- Microsoft.Extensions.Options (>= 2.2.0)
- System.Text.Json (>= 4.6.0)
-
net7.0
- AsyncKeyedLock (>= 6.1.1)
- LiteDB (>= 5.0.15)
- Microsoft.Extensions.Caching.Abstractions (>= 2.2.0)
- Microsoft.Extensions.Caching.Memory (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 2.2.0)
- Microsoft.Extensions.Options (>= 2.2.0)
- System.Text.Json (>= 4.6.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.5.1 | 1,505 | 1/30/2023 |
2.5.0 | 1,369 | 1/19/2023 |
2.4.0 | 1,406 | 1/12/2023 |
2.3.0 | 1,394 | 1/12/2023 |
2.2.0 | 1,537 | 9/8/2022 |
2.1.0 | 1,610 | 8/2/2022 |
2.0.0 | 1,597 | 8/1/2022 |
1.2.1 | 1,671 | 7/10/2022 |
1.2.0 | 1,636 | 7/9/2022 |
1.1.0 | 1,644 | 6/28/2022 |
1.0.3 | 1,646 | 6/28/2022 |
1.0.2 | 1,636 | 6/28/2022 |
1.0.1 | 1,633 | 6/28/2022 |
1.0.0 | 1,658 | 6/28/2022 |
# Changelog
## 2.5.1
- Update `AsyncKeyedLock`
## 2.5.0
- Use `AsyncKeyedLock` instead of semaphores in a concurrent dictionary
## 2.4.0
- Fix nullability attributes on `IMultiLevelCache`
## 2.3.0
- Add `ConnectionType` to options
- Update LiteDB dependency to `5.0.15`
- Support .NET 7.0
## 2.2.0
- Use `.ConfigureAwait(false)` everywhere