A high-performance caching library for Deno
Velo is an in-memory caching library for Deno focusing on high throughput and hit rate. It provides a simple API, multiple cache strategies, and a variety of optional features. For more details, take a look at our examples and browse the documentation.
- Size-based eviction
- Multiple cache strategies (LRU, LFU, ARC, SC, W-TinyLFU)
- Automated loading of entries into the cache
- Time-based expiration of entries
- Listener for cache removals (eviction, expiration, overwrite, manual removal)
- EventEmitter for cache events
- Collecting cache hit and miss statistics
- Install from
deno.land/x
import { Velo } from "https://deno.land/x/velo@1.0.0/mod.ts";
import { Velo } from "https://x.nest.land/velo@1.0.0/mod.ts";
Velo
is a builder class to create a cache instance.
const cache = Velo.builder<string, User>()
.capacity(100_000)
.ttl(120_000) // 2 minutes
.events()
.build();
cache.set("u:1", { id: "1", name: "John Doe" });
cache.set("u:2", { id: "2", name: "Jane Doe" });
cache.get("u:1"); // { id: "1", name: "John Doe" }
For more detailed explanation and usage guides look at the examples.
Velo is designed to be fast. It utilizes a fixed-capacity doubly-linked list as internal data structure for policy implementations. This list relies on a custom pointer system inspired by the mnemonist lru cache, which employs TypedArrays to circumvent bookkeeping overhead.
In velo-benchmarks we provide a set of benchmarks to compare the performance of Velo with other caching libraries. Both hit rate and throughput are measured.