1.2.0 • Published 3 years ago
@alanfilho184/kami-lru-cache v1.2.0
Kami-LRU-Cache
Este pacote é uma simples implementação de um cache em memória que automaticamente apaga items salvos após um tempo pre-definido sem uso (LRU).
Foi criado com a ideia de ser um modulo mais flexível e simples de se utilizar quando comparado com outras alternativas disponiveis atualmente, foi feito para ser utilizado em outros projetos meus (Kami e Kami-Site).
Utilização
Métodos
.set(key: String, value: Any, maxAge: Number): true
.get(key: String): Any
.delete(key: String): true
.has(key: String): Boolean
.length(): Number
.clear(): true
Propriedades
.map: Map<String, JSON>
.maxAge: Number READ-ONLY
.updateAgeOnGet: Boolean READ-ONLY
.events: EventEmitter READ-ONLY
Eventos
.on('keyAutoDelete') => key: String
.on('keySet') => key: String
.on('keyUpdateAge') => (key: String, newAge: Number)
.on('keyGet') => key: String
.on('keyHas') => (key: String, has: Boolean)
.on('cacheLength') => length: Number
.on('cacheClear') => void
Inicialização
const kami_cache = require("kami-lru-cache").kami_cache
const config = {
maxAge: 600000, // Tempo máximo que o item pode permanecer no cache em milissegundos
updateAgeOnGet: true, // Se o tempo máximo do item será redefinido sempre que ele for utilizado
rateOfVerifyAgedKeys: 60000 // Tempo entre cada verficação de chaves que atingiram seu tempo máximo
}
const cache = new kami_cache(config)Utilização
.set
const meuItem = {
atributo: "valor"
}
const meuItemAdicionado = cache.set("MinhaChave", meuItem, 300000)
// meuItemAdicionado = true.get
const meuItem = cache.get("MinhaChave")
// meuItem = {
// atributo: "valor"
// }.has
const meuItemNoCache = cache.has("MinhaChave")
// meuItemNoCache = true.length
const quantidadeDeItensNoCache = cache.length()
// quantidadeDeItensNoCache = 1.delete
const meuItemApagado = cache.delete("MinhaChave")
// meuItemApagado = true.clear
const meuCacheVazio = cache.clear()
// meuCacheVazio = trueEventos
keyAutoDelete
cache.events.on("keyAutoDelete", (key) => {
//To Do
})keySet
cache.events.on("keySet", (key) => {
//To Do
})keyUpdateAge
cache.events.on("keyUpdateAge", (key, newAge) => {
//To Do
})keyGet
cache.events.on("keyGet", (key) => {
//To Do
})keyDelete
cache.events.on("keyDelete", (key) => {
//To Do
})keyHas
cache.events.on("keyHas", (key, has) => {
//To Do
})cacheLength
cache.events.on("cacheLength", (length) => {
//To Do
})cacheClear
cache.events.on("cacheClear", () => {
//To Do
})