UNPKG

@mohan.kmr/cache

Version:

A simple in-memory caching module for Node.js with TTL support

102 lines (69 loc) 2.91 kB
```markdown # SimpleCache SimpleCache is a lightweight, in-memory caching module for Node.js, offering basic caching functionalities with TTL (Time-To-Live) support. ## Installation You can install the package via npm: ### Bash ```bash npm install cachelite ``` ## Features - In-memory key-value storage - Time-To-Live (TTL) support for expiring cached entries - Returns remaining TTL along with the cached value - Simple API for setting, getting, and deleting cache entries - Clear the entire cache with a single method - Check the number of items in the cache ## API ### `set(key, value, ttl)` Stores a value in the cache with an optional TTL. - `key` (String): The key under which the value is stored. - `value` (Any): The value to be stored in the cache. - `ttl` (Number, Optional): Time-To-Live in milliseconds. If provided, the entry will expire after the specified time. ### `get(key)` Retrieves a value from the cache, along with the remaining TTL if applicable. - `key` (String): The key of the value to retrieve. - Returns: An object with `value` and `ttl` properties, or `null` if the key doesn't exist or has expired. - `value` (Any): The cached value. - `ttl` (Number | null): The remaining TTL in milliseconds, or `null` if no TTL was set. ### `delete(key)` Deletes a value from the cache. - `key` (String): The key of the value to delete. - Returns: `true` if the key existed and was deleted, `false` otherwise. ### `clear()` Clears all entries from the cache. - Returns: `undefined` ### `size()` Returns the number of items currently stored in the cache. - Returns: `Number` - The size of the cache. ## Usage ```javascript const SimpleCache = require('cachelite'); const cache = new SimpleCache(); // Set a value with no TTL cache.set('name', 'John Doe'); console.log(cache.get('name')); // Output: { value: 'John Doe', ttl: null } // Set a value with a TTL of 3 seconds cache.set('sessionID', 'abc123', 3000); console.log(cache.get('sessionID')); // Output: { value: 'abc123', ttl: <remaining TTL> } setTimeout(() => { console.log(cache.get('sessionID')); // Output: { value: 'abc123', ttl: <remaining TTL> } }, 1234); setTimeout(() => { console.log(cache.get('sessionID')); // Output: null (expired) }, 4000); // Delete a value cache.set('email', 'john@example.com'); cache.delete('email'); console.log(cache.get('email')); // Output: null // Clear the cache cache.set('token', 'xyz789'); cache.set('userID', 'user123'); console.log('Cache size before clearing:', cache.size()); // Output: 2 cache.clear(); console.log('Cache size after clearing:', cache.size()); // Output: 0 ``` ## License This project is licensed under the MIT License. ``` This update ensures that the module returns the remaining TTL for cached items that have a TTL set.