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 = true
Eventos
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
})