MemoizeRedis 1.2.1
dotnet add package MemoizeRedis --version 1.2.1
NuGet\Install-Package MemoizeRedis -Version 1.2.1
<PackageReference Include="MemoizeRedis" Version="1.2.1" />
paket add MemoizeRedis --version 1.2.1
#r "nuget: MemoizeRedis, 1.2.1"
// Install MemoizeRedis as a Cake Addin #addin nuget:?package=MemoizeRedis&version=1.2.1 // Install MemoizeRedis as a Cake Tool #tool nuget:?package=MemoizeRedis&version=1.2.1
MemoizeRedis
This project enables the Memoization (caching) of Method calls to a redis database. It is very basic at the moment meant mostly for internal usage but I decided to publish as it might be helpful for others as I had to overcome some trouble.
The project is not performance optimized and relies on some slow things (reflection).
It will probably undergo rewrites as I'd like to move this to a sourcecode generated Attribute (AOS) style caching of method calls but haven't had the time.
Memoization Settings can be passed to the instance, or they will be loaded by default from appsettings.json to point toward your redis cache.
{
"cache": {
"server": "172.18.39.138",
"ttl": 24
}
}
The program relies on some lazy "singleton" creation just to make my usage of it easier in various projects.
Setup your appsettings.json like above, and then you can call any function like:
using MemoizeRedis;
var returnValue = await Memoize.WithRedisAsync(() => AnyFunction(someParam, someParam2));
MemoizeRedis will check the Redis for a cached copy with the key based on the function name and parameters passed in to the function. If no cached copy exists, it will run the function. Once a return from the function occurs it will Serialize to JSON the results, and save that to Redis for future usage in calls with the same function/params.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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 was computed. 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. |
-
net6.0
- Microsoft.Extensions.Configuration.Binder (>= 6.0.0-rc.2.21480.5)
- Microsoft.Extensions.Configuration.Json (>= 6.0.0-rc.2.21480.5)
- RedisCore (>= 0.2.11)
- Serilog (>= 2.10.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on MemoizeRedis:
Package | Downloads |
---|---|
cnmWebApi
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.2.1 | 142 | 6/14/2023 |
Fixed a major issue for when the expression we're passing has non MemberExpression or Unary Arguments.