logologo
Começar
Manual
Desenvolvimento
Plugins
API
Início
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Começar
Manual
Desenvolvimento
Plugins
API
Início
logologo
Visão Geral da API

@nocobase/auth

AuthManager
Autenticação
BaseAuth

@nocobase/cache

CacheManager
Cache

@nocobase/cli

NocoBase CLI
Variáveis de Ambiente Globais

@nocobase/client

Aplicação
Plugin

@nocobase/database

Coleção
Campo

interfaces

BaseInterface
Operadores de Filtro

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Repositório

shared

create-options
destroy-options
find-one
find-options
transaction
update-options

@nocobase/data-source-manager

DataSourceManager
DataSource (abstrata)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

Gerenciador de Fonte de Dados
Contexto do Fluxo
FlowEngine
FlowModel
Recurso de Fluxo

@nocobase/logger

Logger

@nocobase/server

AppCommand
Aplicação
AuditManager
Contexto
Migração
Plugin

@nocobase/sdk

Auth
Storage
Previous PageBaseAuth
Next PageCache
Aviso de tradução por IA

Esta documentação foi traduzida automaticamente por IA.

#CacheManager

#Visão Geral

O CacheManager é baseado no node-cache-manager e oferece funcionalidades de gerenciamento de módulos de cache para o NocoBase. Os tipos de cache integrados são:

  • memory - o lru-cache fornecido por padrão pelo node-cache-manager.
  • redis - com suporte do node-cache-manager-redis-yet.

Você pode registrar e estender mais tipos através da API.

#Conceitos

  • Store: Define um método de cache, incluindo um método de fábrica para criar caches e outras configurações relacionadas. Cada método de cache tem um identificador único, fornecido durante o registro. Os identificadores únicos para os dois métodos de cache integrados são memory e redis.

  • Método de Fábrica do Store: É um método fornecido pelo node-cache-manager e pacotes de extensão relacionados para criar caches. Por exemplo, 'memory' (fornecido por padrão pelo node-cache-manager) e redisStore (fornecido pelo node-cache-manager-redis-yet). Ele corresponde ao primeiro parâmetro do método caching do node-cache-manager.

  • Cache: Uma classe encapsulada pelo NocoBase que oferece métodos para usar o cache. Ao usar o cache, você opera em uma instância de Cache. Cada instância de Cache tem um identificador único, que pode ser usado como um namespace para distinguir diferentes módulos.

#Métodos de Classe

#constructor()

#Assinatura

  • constructor(options?: CacheManagerOptions)

#Tipos

export type CacheManagerOptions = Partial<{
  defaultStore: string;
  stores: {
    [storeType: string]: StoreOptions;
  };
}>;

type StoreOptions = {
  store?: 'memory' | FactoryStore<Store, any>;
  close?: (store: Store) => Promise<void>;
  // global config
  [key: string]: any;
};

#Detalhes

#CacheManagerOptions
PropriedadeTipoDescrição
defaultStorestringO identificador único para o tipo de cache padrão.
storesRecord<string, StoreOptions>Registra os tipos de cache. A chave é o identificador único para o tipo de cache, e o valor é um objeto que contém o método de registro e a configuração global para o tipo de cache.
No node-cache-manager, o método para criar um cache é await caching(store, config). O objeto a ser fornecido aqui é StoreOptions.
#StoreOptions
PropriedadeTipoDescrição
storememory | FactoryStore<Store, any>O método de fábrica do store, correspondendo ao primeiro parâmetro de caching.
close(store: Store) => Promise<void>Opcional. Para middlewares como o Redis que exigem uma conexão, você precisa fornecer um método de callback para fechar a conexão. O parâmetro de entrada é o objeto retornado pelo método de fábrica do store.
[key: string]anyOutras configurações globais do store, correspondendo ao segundo parâmetro de caching.

#options Padrão

import { redisStore, RedisStore } from 'cache-manager-redis-yet';

const defaultOptions: CacheManagerOptions = {
  defaultStore: 'memory',
  stores: {
    memory: {
      store: 'memory',
      // global config
      max: 2000,
    },
    redis: {
      store: redisStore,
      close: async (redis: RedisStore) => {
        await redis.client.quit();
      },
    },
  },
};

O parâmetro options será mesclado com as opções padrão. As propriedades já presentes nas opções padrão podem ser omitidas. Por exemplo:

const cacheManager = new CacheManager({
  stores: {
    defaultStore: 'redis',
    redis: {
      // redisStore já é fornecido nas opções padrão, então você só precisa fornecer a configuração do redisStore.
      url: 'redis://localhost:6379',
    },
  },
});

#registerStore()

Registra um novo método de cache. Por exemplo:

import { redisStore } from 'cache-manager-redis-yet';

cacheManager.registerStore({
  // identificador único para o store
  name: 'redis',
  // método de fábrica para criar o store
  store: redisStore,
  // fecha a conexão do store
  close: async (redis: RedisStore) => {
    await redis.client.quit();
  },
  // configuração global
  url: 'xxx',
});

#Assinatura

  • registerStore(options: { name: string } & StoreOptions)

#createCache()

Cria um cache. Por exemplo:

await cacheManager.createCache({
  name: 'default', // identificador único para o cache
  store: 'memory', // identificador único para o store
  prefix: 'mycache', // adiciona automaticamente o prefixo 'mycache:' às chaves de cache, opcional
  // outras configurações do store, configurações personalizadas serão mescladas com a configuração global do store
  max: 2000,
});

#Assinatura

  • createCache(options: { name: string; prefix?: string; store?: string; [key: string]: any }): Promise<Cache>

#Detalhes

#options
PropriedadeTipoDescrição
namestringIdentificador único para o cache.
storestringIdentificador único para o store.
prefixstringOpcional, prefixo da chave de cache.
[key: string]anyOutros itens de configuração personalizados relacionados ao store.

Se o store for omitido, o defaultStore será usado. Nesse caso, o método de cache mudará de acordo com o método de cache padrão do sistema.

Quando não há configurações personalizadas, ele retorna o espaço de cache padrão criado pela configuração global e compartilhado pelo método de cache atual. É recomendado adicionar um prefix para evitar conflitos de chave.

// Usa o cache padrão com a configuração global
await cacheManager.createCache({ name: 'default', prefix: 'mycache' });
#Cache

Veja Cache

#getCache()

Obtém o cache correspondente.

cacheManager.getCache('default');

#Assinatura

  • getCache(name: string): Cache

#flushAll()

Redefine todos os caches.

await cacheManager.flushAll();

#close()

Fecha todas as conexões dos middlewares de cache.

await cacheManager.close();