Skip to content

Instantly share code, notes, and snippets.

@rallisf1
Created November 13, 2024 09:46
Show Gist options
  • Save rallisf1/a1226a793ca6e756e5ee4f2ed456e7be to your computer and use it in GitHub Desktop.
Save rallisf1/a1226a793ca6e756e5ee4f2ed456e7be to your computer and use it in GitHub Desktop.
Simple Typescript Memory Cache
export const cache = {
data: new Map(),
timers: new Map(),
set: (k: string, v: any, ttl: number) => {
if (cache.timers.has(k)) {
clearTimeout(cache.timers.get(k))
}
cache.timers.set(
k,
setTimeout(() => cache.delete(k), ttl * 1000)
)
cache.data.set(k, v)
},
get: (k: string) => cache.data.get(k),
has: (k: string) => cache.data.has(k),
delete: (k: string) => {
if (cache.timers.has(k)) {
clearTimeout(cache.timers.get(k))
}
cache.timers.delete(k)
return cache.data.delete(k)
},
clear: () => {
cache.data.clear()
for (const v of cache.timers.values()) {
clearTimeout(v)
}
cache.timers.clear()
},
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment