@tc-libs/app-cache 5.5.2 → 5.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -74,6 +74,7 @@ this.cache.saveToCache(key, result, options);
|
|
|
74
74
|
- Se vuoi una chiave custom puoi passare `options.caching.key`.
|
|
75
75
|
- Con `enabled` a `true` Redis è un'istanza Keyv con l'adapter `@keyv/redis`, passata in `stores`: `@nestjs/cache-manager` 12 ignora l'opzione `store`. Più processi con lo stesso Redis condividono la cache.
|
|
76
76
|
- `ttl` (del modulo e di `options.caching.ttl`) è in millisecondi, come in cache-manager 7.
|
|
77
|
+
- `prefix` (facoltativo) è il prefisso delle chiavi in Redis, `prefix::chiave`: separa applicazioni e ambienti che usano lo stesso Redis. Per esempio il nome dell'app con l'ambiente.
|
|
77
78
|
- Se Redis non risponde, le letture sono un miss e le scritture si perdono, senza errori per il chiamante: l'errore resta nel log come warning e il client ritenta la connessione, con un intervallo che cresce fino a 10 secondi.
|
|
78
79
|
- `registerAsync` passa `inject` anche alla factory della cache Redis.
|
|
79
80
|
|
package/package.json
CHANGED
package/src/app-cache.module.js
CHANGED
|
@@ -12,13 +12,13 @@ const logger = new common_1.Logger('AppCacheModule');
|
|
|
12
12
|
// @keyv/redis. Un Redis che non risponde non ferma l'app: l'adapter emette l'errore, che resta nel log, e risponde come
|
|
13
13
|
// una cache vuota. I tentativi di riconnessione rallentano fino a uno ogni 10 secondi: con il default del client erano
|
|
14
14
|
// due al secondo, ognuno con il suo warning.
|
|
15
|
-
function redisStores(server) {
|
|
15
|
+
function redisStores({ server, prefix }) {
|
|
16
16
|
const store = (0, redis_1.createKeyv)({
|
|
17
17
|
url: `redis://${server.host}:${server.port}`,
|
|
18
18
|
socket: {
|
|
19
19
|
reconnectStrategy: (retries) => Math.min(retries * 500, 10_000),
|
|
20
20
|
},
|
|
21
|
-
}, { throwOnConnectError: false });
|
|
21
|
+
}, { throwOnConnectError: false, namespace: prefix });
|
|
22
22
|
store.on('error', (error) => logger.warn(`Redis ${server.host}:${server.port}: ${error instanceof Error ? error.message : String(error)}`));
|
|
23
23
|
return [store];
|
|
24
24
|
}
|
|
@@ -27,7 +27,7 @@ class AppCacheModule {
|
|
|
27
27
|
const imports = [];
|
|
28
28
|
if (enabled) {
|
|
29
29
|
imports.push(cache_manager_1.CacheModule.register({
|
|
30
|
-
stores: redisStores(options
|
|
30
|
+
stores: redisStores(options),
|
|
31
31
|
ttl: options.ttl,
|
|
32
32
|
isGlobal: true,
|
|
33
33
|
}));
|
|
@@ -59,7 +59,7 @@ class AppCacheModule {
|
|
|
59
59
|
useFactory: async (...args) => {
|
|
60
60
|
const appCacheOptions = await options.useFactory(...args);
|
|
61
61
|
return {
|
|
62
|
-
stores: redisStores(appCacheOptions
|
|
62
|
+
stores: redisStores(appCacheOptions),
|
|
63
63
|
ttl: appCacheOptions.ttl,
|
|
64
64
|
isGlobal: true,
|
|
65
65
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-cache.module.js","sourceRoot":"","sources":["../../../../packages/app-cache/src/app-cache.module.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AACzC,yDAAoD;AACpD,2CAA+E;AAE/E,2DAAsD;AACtD,yEAGoC;AAEpC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5C,sHAAsH;AACtH,oHAAoH;AACpH,wHAAwH;AACxH,uHAAuH;AACvH,6CAA6C;AAC7C,SAAS,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"app-cache.module.js","sourceRoot":"","sources":["../../../../packages/app-cache/src/app-cache.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export interface AppCacheModuleOptions {
|
|
|
8
8
|
port: number;
|
|
9
9
|
};
|
|
10
10
|
enabled: boolean;
|
|
11
|
+
prefix?: string;
|
|
11
12
|
}
|
|
12
13
|
type AppCacheModuleAsyncOptions = Pick<ModuleMetadata, 'imports'> & Pick<FactoryProvider<AppCacheModuleOptions>, 'useFactory' | 'inject'>;
|
|
13
14
|
export default AppCacheModuleAsyncOptions;
|