BitFaster.Caching 2.5.3

⚡ BitFaster.Caching

High performance, thread-safe in-memory caching primitives for .NET.

ConcurrentLru

ConcurrentLru is a light weight drop in replacement for ConcurrentDictionary, but with bounded size enforced by the TU-Q eviction policy (based on 2Q). There are no background threads, no global locks, concurrent throughput is high, lookups are fast and hit rate outperforms a pure LRU in all tested scenarios.

Choose a capacity and use just like ConcurrentDictionary, but with bounded size:

int capacity = 128;
var lru = new ConcurrentLru<string, SomeItem>(capacity);

var value = lru.GetOrAdd("key", (key) => new SomeItem(key));

Optionally configure ConcurrentLru with a time-based eviction policy, either:

  • Expire after write
  • Expire after access
  • Calculate an expiry time per item

ConcurrentLfu

ConcurrentLfu is a drop in replacement for ConcurrentDictionary, but with bounded size enforced by the W-TinyLFU admission policy. ConcurrentLfu has near optimal hit rate and high scalability. Reads and writes are buffered then replayed asynchronously to mitigate lock contention.

Choose a capacity and use just like ConcurrentDictionary, but with bounded size:

int capacity = 128;
var lfu = new ConcurrentLfu<string, SomeItem>(capacity);

var value = lfu.GetOrAdd("key", (key) => new SomeItem(key));

Optionally configure ConcurrentLfu with a time-based eviction policy, either:

  • Expire after write
  • Expire after access
  • Calculate an expiry time per item

Documentation

Please refer to the wiki for API documentation, and an analysis of hit rate, latency and throughput.

Showing the top 20 packages that depend on BitFaster.Caching.

Packages Downloads
Jellyfin.Controller
Package Description
1

.NET Core 3.1

  • No dependencies.

.NET 6.0

  • No dependencies.

.NET Standard 2.0

Version Downloads Last updated
2.5.3 2 2025/6/13
2.5.2 2 2025/6/15
2.5.1 2 2025/6/15
2.5.0 2 2025/6/15
2.4.1 2 2025/6/15
2.4.0 2 2025/6/15
2.3.3 2 2025/6/15
2.3.2 1 2025/6/15
2.3.1 2 2025/6/15
2.3.0 2 2025/6/15
2.2.1 2 2025/6/15
2.2.0 2 2025/6/15
2.1.3 2 2025/6/15
2.1.2 2 2025/6/15
2.1.1 2 2025/6/15
2.1.0 2 2025/6/15
2.0.0 2 2025/6/15
1.1.0 2 2025/6/15
1.0.7 2 2025/6/15
1.0.6 2 2025/6/15
1.0.5 2 2025/6/15
1.0.4 2 2025/6/15
1.0.3 2 2025/6/15
1.0.2 2 2025/6/15
1.0.1 2 2025/6/15
1.0.0 2 2025/6/15
0.9.4 2 2025/6/15
0.9.3 2 2025/6/15
0.9.2 2 2025/6/15
0.9.1 2 2025/6/15