cacherine 1.0.2 copy "cacherine: ^1.0.2" to clipboard
cacherine: ^1.0.2 copied to clipboard

A Dart library that provides flexible in-memory cache implementations including FIFO, LRU, MRU, and LFU, with both single-threaded and async-enabled options for concurrent environments.

cacherine #

Pub Version

cacherine is a simple and flexible memory cache library for Dart. It provides basic caching algorithms such as FIFO, LRU, MRU, and LFU. Both single-threaded and async-enabled versions are available to handle different usage scenarios.

Why cacherine? #

Dart/Flutter does not have a built-in caching solution similar to NSCache in Swift.
cacherine was created to provide a lightweight and flexible in-memory cache with common caching strategies like FIFO, LRU, MRU, and LFU.

Whether you need a simple single-threaded cache or an async-compatible solution for concurrent environments, cacherine offers an easy-to-use API.

Features #

  • FIFO (First In, First Out)
  • EphemeralFIFO (FIFO-based cache where keys are removed after being accessed)
  • LRU (Least Recently Used)
  • MRU (Most Recently Used)
  • LFU (Least Frequently Used)
  • Simple versions (e.g., SimpleFIFOCache) for single-threaded usage, and standard versions for multi-threaded environments

Installation #

Check the latest version on pub.dev and add it to your pubspec.yaml:

dependencies:
  cacherine: ^latest_version

Then, run the following command in your terminal:

dart pub get

Usage #

Basic Usage (Single-threaded) #

import 'package:cacherine/cacherine.dart';

void main() {
  final cache = SimpleFIFOCache<String, String>(maxSize: 5);
  cache.set('key1', 'value1');
  print(cache.get('key1')); // 'value1'
}

Async Usage (Async support) #

import 'package:cacherine/cacherine.dart';

void main() async {
  final cache = FIFOCache<String, String>(maxSize: 5);
  await cache.set('key1', 'value1');
  print(await cache.get('key1')); // 'value1'
}

API Reference #

  • FIFOCache<K, V>: FIFO-based cache
  • EphemeralFIFOCache<K, V>: FIFO-based cache where the key is removed after being accessed (One-Time Read Cache)
  • LRUCache<K, V>: Cache that retains the least recently used items
  • MRUCache<K, V>: Cache that retains the most recently used items
  • LFUCache<K, V>: Cache that removes the least frequently used items

Contributing #

Contributions are welcome! If you find a bug, have a feature request, or want to improve the code, feel free to open an issue or submit a pull request.

How to Contribute #

  1. Fork the repository and create a new branch.
  2. Make your changes and write tests if necessary.
  3. Ensure the code passes all checks (dart analyze, dart test).
  4. Open a pull request and describe your changes.

For major changes, please open an issue first to discuss your proposal.

We appreciate your support in making cacherine better! 🚀

Changelog #

All notable changes to this project will be documented in the CHANGELOG file.

See the full changelog here.

License #

This project is licensed under the BSD-3-Clause License - see the LICENSE file for details.

1
likes
0
points
1.54k
downloads

Publisher

verified publisheryom-engine.com

Weekly Downloads

A Dart library that provides flexible in-memory cache implementations including FIFO, LRU, MRU, and LFU, with both single-threaded and async-enabled options for concurrent environments.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

synchronized

More

Packages that depend on cacherine