Community.Microsoft.Extensions.Caching.PostgreSql
4.0.6
dotnet add package Community.Microsoft.Extensions.Caching.PostgreSql --version 4.0.6
NuGet\Install-Package Community.Microsoft.Extensions.Caching.PostgreSql -Version 4.0.6
<PackageReference Include="Community.Microsoft.Extensions.Caching.PostgreSql" Version="4.0.6" />
paket add Community.Microsoft.Extensions.Caching.PostgreSql --version 4.0.6
#r "nuget: Community.Microsoft.Extensions.Caching.PostgreSql, 4.0.6"
// Install Community.Microsoft.Extensions.Caching.PostgreSql as a Cake Addin #addin nuget:?package=Community.Microsoft.Extensions.Caching.PostgreSql&version=4.0.6 // Install Community.Microsoft.Extensions.Caching.PostgreSql as a Cake Tool #tool nuget:?package=Community.Microsoft.Extensions.Caching.PostgreSql&version=4.0.6
Community.Microsoft.Extensions.Caching.PostgreSQL
Description
This implemantation uses PostgreSQL 11+ as distributed cache. Version 4 and up.
For PostgreSQL ⇐ 10
Use older versions of this packages (<= 3.1.2)
Getting Started
1. Install the package into your project
dotnet add package Community.Microsoft.Extensions.Caching.PostgreSql
2. Add the following line to the Startup
Configure
method.
Basic Configuring
services.AddDistributedPostgreSqlCache(setup =>
{
setup.ConnectionString = configuration["ConnectionString"];
setup.SchemaName = configuration["SchemaName"];
setup.TableName = configuration["TableName"];
setup.DisableRemoveExpired = configuration["DisableRemoveExpired"];
// Optional - DisableRemoveExpired default is FALSE
setup.CreateInfrastructure = configuration["CreateInfrastructure"];
// CreateInfrastructure is optional, default is TRUE
// This means que every time starts the application the
// creation of table and database functions will be verified.
setup.ExpiredItemsDeletionInterval = TimeSpan.FromMinutes(30)
// ExpiredItemsDeletionInterval is optional
// This is the periodic interval to scan and delete expired items in the cache. Default is 30 minutes.
// Minimum allowed is 5 minutes. - If you need less than this please share your use case 😁, just for curiosity...
})
Configuring with IServiceProvider
access
services.AddDistributedPostgreSqlCache((serviceProvider, setup) =>
{
// IConfiguration is used as an example here
var configuration = serviceProvider.GetRequiredService<IConfiguration>();
setup.ConnectionString = configuration["ConnectionString"];
...
})
Configuring via IConfigureOptions<PostgreSqlCacheOptions>
use
services.AddDistributedPostgreSqlCache();
and implement and register
IConfigureOptions<PostgreSqlCacheOptions>
Configuration Options
DisableRemoveExpired = True
use case (default false):
When you have 2 or more instances/microservices/processes and you just to leave one of them removing expired items.
- Note 1: This is not mandatory, see if it fits in you cenario.
- Note 2: If you have only one instance and set to
True
, all the expired items will not be auto-removed, when you callGetItem
those expired items are filtred out. In that case you are responsable to manually remove the expired key or update it
- Then pull from DI like any other service
/// this is extracted from the React+WebApi WebSample
private readonly IDistributedCache _cache;
public WeatherForecastController(IDistributedCache cache)
{
_cache = cache;
}
UpdateOnGetCacheItem = false
use case (default true):
If you, or the implementation using this cache, is explicitly calling the IDistributedCache.Refresh
to update the sliding window,
then you can turn off the UpdateOnGetCacheItem
to remove the additional DB expiration update call just prior to reading the cached value. This is useful if you are using this package in conjunction with ASP.NET Core Session handling.
services.AddDistributedPostgreSqlCache((serviceProvider, setup) =>
{
...
setup.UpdateOnGetCacheItem = false;
// Or
var configuration = serviceProvider.GetRequiredService<IConfiguration>();
setup.UpdateOnGetCacheItem = configuration["UpdateOnGetCacheItem"];
...
})
'ReadOnlyMode = true` use case (default false):
For read-only databases or if the database user does not have write
permission you can set ReadOnlyMode = true
- Note 1: This will cancel the sliding expiration and only absolute expiration will work
- Note 2: This can be used to improve performance, but you will not be able to change any cache values
services.AddDistributedPostgreSqlCache((serviceProvider, setup) =>
{
...
setup.ReadOnlyMode = true;
// Or
var configuration = serviceProvider.GetRequiredService<IConfiguration>();
setup.ReadOnlyMode = configuration["UpdateOnGetCacheItem"];
...
})
CreateInfrastructure = true
use case:
It creates a table & schema for storing cache (names are configurable)
Runing the console sample
You will need a local postgresql server with this configuration:
- Server listening to port 5432 at localhost
- The password of your
postgres
account, if not attached already to your user. - Clone this repo.
- Run the following commands inside
PostgreSqlCacheSample
:
dotnet restore
prepare-database.cmd -create
dotnet run
Runing the React+WebApi WebSample project
You will need a local postgresql server with this configuration:
- Server listening to port 5432 at localhost
- The password of your
postgres
account, if not attached already to your user. - You also need
npm
andnode
installed on your dev machine - Clone this repo.
- Run the following commands inside
WebSample
:
dotnet restore
prepare-database.cmd -create
dotnet run
It takes some time to npm
retore the packages, grab a ☕ while waiting...
Then you can delete the database with:
prepare-database.cmd -erase
Change Log
- v4.0.1 - Add suport to .net 7
- [BREAKING CHANGE] - Drop suport to .net 5
- [BREAKING CHANGE] - Make use of procedures (won't work with PostgreSQL ⇐ 10, use version 3)
- v3.1.2 - removed dependency for
IHostApplicationLifetime
if not supported on the platform:AWS
for instance - issue #28 - v3.1.0 - Added log messages on
Debug
Level, multitarget .net5 and .net6, dropped support to netstandard2.0, fix sample to match multitarget and sample database. - v3.0.2 -
CreateInfrastructure
also creates the schema issue #8 - v3.0.1 -
DisableRemoveExpired
configuration added; IfTRUE
the cache instance won`t delete expired items. - v3.0
- [BREAKING CHANGE] - Direct instantiation not preferred
- Single thread loop remover
- v2.0.x - Update everything to net5.0, more detailed sample project.
- v1.0.8 - Update to latest dependencies -
License
- MIT
This is a fork from repo
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
.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
- Dapper (>= 2.0.123)
- Microsoft.Extensions.Caching.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Options (>= 7.0.0)
- Npgsql (>= 7.0.0)
NuGet packages (5)
Showing the top 5 NuGet packages that depend on Community.Microsoft.Extensions.Caching.PostgreSql:
Package | Downloads |
---|---|
BIA.Net.Core.Presentation.Common
Presentation features layer classes for BIA.Net Core Framework |
|
BIA.Net.Core.Presentation.Api
Presentation api layer classes for BIA.Net Core Framework |
|
BIA.Net.Core.WorkerService
WorkerService layer classes for BIA.Net Core Framework |
|
SoftwaredeveloperDotAt.Infrastructure.Core.PostgreSQL
Library for base .NET Classes |
|
Pipoburgos.SharedKernel.Infrastructure.EntityFrameworkCore.PostgreSQL
EntityFrameworkCore.PostgreSQL infrastructure implementations |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Community.Microsoft.Extensions.Caching.PostgreSql:
Repository | Stars |
---|---|
simpleidserver/SimpleIdServer
OpenID, OAuth 2.0, SCIM2.0, UMA2.0, FAPI, CIBA & OPENBANKING Framework for ASP.NET Core
|
Version | Downloads | Last updated |
---|---|---|
4.0.6 | 32,929 | 8/20/2024 |
4.0.4 | 138,257 | 10/2/2023 |
4.0.2 | 67,519 | 12/27/2022 |
4.0.1 | 4,045 | 12/6/2022 |
3.1.2 | 89,387 | 5/25/2022 |
3.1.1 | 25,629 | 2/22/2022 |
3.1.0 | 11,381 | 12/20/2021 |
3.0.3.2 | 46,263 | 5/14/2021 |
3.0.2 | 1,166 | 4/4/2021 |
3.0.1 | 21,299 | 1/17/2021 |
3.0.0 | 815 | 1/9/2021 |
2.0.7 | 2,554 | 11/27/2020 |
1.0.30 | 68,673 | 4/20/2019 |
1.0.7 | 3,136 | 3/24/2018 |
1.0.5 | 863 | 3/22/2018 |
1.0.0 | 1,017 | 3/22/2018 |