Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ndragun92/file-sys-cache

Efficient system files-based caching for Node.js applications.
https://github.com/ndragun92/file-sys-cache

cache caching file-cache filesystem node npm optimization package performance storage system

Last synced: 27 days ago
JSON representation

Efficient system files-based caching for Node.js applications.

Awesome Lists containing this project

README

        

# File-Sys-Cache

File-Sys-Cache is an npm package that provides a simple and efficient system files-based caching solution for Node.js applications.

## Features

- **Set Cache**: Store data in the cache with options to specify file name prefix, file name, payload, and time-to-live (TTL).
- **Get Cached Data**: Retrieve cached data by providing the corresponding file name or prefix.
- **Invalidate Cached Data**: Automatically invalidate cached data for items with expired TTLs.
- **Flush Cache by Regex**: Flush cache entries that match a given regular expression.
- **Flush Whole Cache**: Clear the entire cache, removing all stored entries.
- **Monitoring**: Monitor cache usage and performance statistics, including invalidated files count, logs over time, size over time, and request count.
- **TypeScript**: Full TypeScript support

## Installation

Install File-Sys-Cache via npm:

```bash
npm install file-sys-cache
```

## Usage
```javascript
import { FileSysCache } from 'file-sys-cache'

// Create a new cache instance
const cache = new FileSysCache({
basePath: './.file-sys-cache', // Directory where cache will be stored
defaultTTL: 60, // 60 seconds expiration time
hash: 'sha256', // Hashing algorithm
debug: false, // Enabled debug mode
autoInvalidate: false, // Auto invalidate files from file-system and delete expired files automatically without need of triggering .invalidate()
enableMonitoring: false // Enabled monitoring which exposes cache.monitoring.get(), cache.monitoring.reset()
});

// Set cache with a file name prefix, file name, payload, and TTL
await cache.set({ fileName: 'myFileName', key: 'myUniqueKey', payload: myPayload, ttl: 3600 })

// Retrieve cached data by file name prefix and file name
const data = await cache.get({ fileName: 'myFileName', key: 'myUniqueKey' });

// Retrieve current list of files inside cache
const data = await cache.files();

// Flush cache by passing regex
await cache.flushByRegex('myString', 'myString2'); // Flush cache by regex match (single or multiple same matches)

// Flush whole cache
await cache.flushAll();
```

For more detailed usage examples and API documentation, please refer to the [Documentation](https://ndragun92.github.io/file-sys-cache) section.

## Contributing
Contributions are welcome! Please see the [Contributing Guidelines](https://github.com/ndragun92/file-sys-cache/blob/main/CONTRIBUTING.md) for more information.

## License
This project is licensed under the MIT License - see the [LICENSE](https://github.com/ndragun92/file-sys-cache/blob/main/LICENSE) file for details.