
Company News
Meet the Socket Team at RSAC and BSidesSF 2026
Join Socket for live demos, rooftop happy hours, and one-on-one meetings during BSidesSF and RSA 2026 in San Francisco.
@keyv/bigmap
Advanced tools
Bigmap for Keyv
djb2Hash for fast key lookups.@cacheable/memory for scalable in-memory caching.npm install --save keyv @keyv/bigmap
BigMap is a scalable Map implementation that overcomes JavaScript's built-in Map limit of approximately 17 million entries. It uses a distributed hash approach with multiple internal Map instances.
import { BigMap } from '@keyv/bigmap';
// Create a new BigMap
const bigMap = new BigMap<string, number>();
// Set values
bigMap.set('key1', 100);
bigMap.set('key2', 200);
// Get values
const value = bigMap.get('key1'); // 100
// Check if key exists
bigMap.has('key1'); // true
// Delete a key
bigMap.delete('key1'); // true
// Get size
console.log(bigMap.size); // 1
// Clear all entries
bigMap.clear();
By default, BigMap uses 4 internal Map instances. You can configure this:
const bigMap = new BigMap<string, number>({ storeSize: 10 });
Note: Changing the storeSize after initialization will clear all entries.
Provide your own hash function for key distribution:
const customHashFunction = (key: string, storeSize: number) => {
return key.length % storeSize;
};
const bigMap = new BigMap<string, string>({
storeHashFunction: customHashFunction
});
Hashery is a powerful hashing library that provides multiple hash algorithms. You can use it for better key distribution and it is available as an export:
import { BigMap, Hashery } from '@keyv/bigmap';
const hashery = new Hashery();
// Using Hashery's toNumberSync for deterministic key distribution
const bigMap = new BigMap<string, string>({
storeHashFunction: (key: string, storeSize: number) => {
return hashery.toNumberSync(key, { min: 0, max: storeSize - 1 });
}
});
// You can also use different algorithms
const hasheryFnv1 = new Hashery({ defaultAlgorithmSync: 'fnv1' });
const bigMapWithFnv1 = new BigMap<string, string>({
storeHashFunction: (key: string, storeSize: number) => {
return hasheryFnv1.toNumberSync(key, { min: 0, max: storeSize - 1 });
}
});
Hashery supports multiple synchronous hash algorithms:
BigMap supports all standard Map iteration methods:
const bigMap = new BigMap<string, number>();
bigMap.set('a', 1);
bigMap.set('b', 2);
for (const [key, value] of bigMap) {
console.log(key, value);
}
bigMap.forEach((value, key) => {
console.log(key, value);
});
// With custom context
const context = { sum: 0 };
bigMap.forEach(function(value) {
this.sum += value;
}, context);
// Iterate over keys
for (const key of bigMap.keys()) {
console.log(key);
}
// Iterate over values
for (const value of bigMap.values()) {
console.log(value);
}
// Iterate over entries
for (const [key, value] of bigMap.entries()) {
console.log(key, value);
}
interface User {
id: number;
name: string;
}
const userMap = new BigMap<string, User>();
userMap.set('user1', { id: 1, name: 'Alice' });
BigMap is designed to handle millions of entries:
const bigMap = new BigMap<string, number>({ storeSize: 16 });
// Add 20+ million entries without hitting Map limits
for (let i = 0; i < 20000000; i++) {
bigMap.set(`key${i}`, i);
}
console.log(bigMap.size); // 20000000
BigMap can be used as a storage adapter for Keyv, providing a scalable in-memory store with TTL support.
The createKeyv function creates a Keyv instance with BigMap as the storage adapter.
Parameters:
options (optional): BigMap configuration options
storeSize (number): Number of internal Map instances. Default: 4storeHashFunction (StoreHashFunction): Custom hash function for key distributionReturns: Keyv instance with BigMap adapter
Example:
import { createKeyv } from '@keyv/bigmap';
// Basic usage
const keyv = createKeyv();
// Set with TTL (in milliseconds)
await keyv.set('user:123', { name: 'Alice', age: 30 }, 60000); // Expires in 60 seconds
// Get value
const user = await keyv.get('user:123');
console.log(user); // { name: 'Alice', age: 30 }
// Check if key exists
const exists = await keyv.has('user:123');
// Delete key
await keyv.delete('user:123');
// Clear all keys
await keyv.clear();
import { createKeyv } from '@keyv/bigmap';
// Create with custom store size for better performance with millions of keys
const keyv = createKeyv({ storeSize: 16 });
// With custom hash function
const keyv = createKeyv({
storeSize: 8,
storeHashFunction: (key, storeSize) => {
// Custom distribution logic
return key.length % storeSize;
}
});
import { createKeyv } from '@keyv/bigmap';
interface Product {
id: string;
name: string;
price: number;
}
const keyv = createKeyv<string, Product>();
await keyv.set('product:1', {
id: '1',
name: 'Laptop',
price: 999
});
const product = await keyv.get<Product>('product:1');
BigMap works seamlessly with the Keyv ecosystem:
import { createKeyv } from '@keyv/bigmap';
const cache = createKeyv({ storeSize: 16 });
// Use with namespaces
const users = cache.namespace('users');
const products = cache.namespace('products');
await users.set('123', { name: 'Alice' });
await products.set('456', { name: 'Laptop' });
// Iterate over keys
for await (const [key, value] of cache.iterator()) {
console.log(key, value);
}
new BigMap<K, V>(options?)
Creates a new BigMap instance.
Parameters:
options (optional): Configuration options
storeSize (number): Number of internal Map instances to use. Default: 4. Must be at least 1.storeHashFunction (StoreHashFunction): Custom hash function for key distribution. Default: defaultHashFunctionExample:
const bigMap = new BigMap<string, number>();
const customBigMap = new BigMap<string, number>({
storeSize: 10,
storeHashFunction: (key, storeSize) => key.length % storeSize
});
| Property | Type | Access | Description |
|---|---|---|---|
size | number | Read-only | Gets the total number of entries in the BigMap. |
storeSize | number | Read/Write | Gets or sets the number of internal Map instances. Note: Setting this will clear all entries. Default: 4 |
storeHashFunction | StoreHashFunction | undefined | Read/Write | Gets or sets the hash function used for key distribution. |
store | Array<Map<K, V>> | Read-only | Gets the internal array of Map instances. |
Examples:
const bigMap = new BigMap<string, number>();
// size property
bigMap.set('key1', 100);
console.log(bigMap.size); // 1
// storeSize property
console.log(bigMap.storeSize); // 4 (default)
bigMap.storeSize = 8; // Changes size and clears all entries
// storeHashFunction property
bigMap.storeHashFunction = (key, storeSize) => key.length % storeSize;
// store property
console.log(bigMap.store.length); // 8
Sets the value for a key in the map.
Parameters:
key (K): The key to setvalue (V): The value to associate with the keyReturns: Map<K, V> - The internal Map instance where the key was stored
Example:
bigMap.set('user123', { name: 'Alice' });
Gets the value associated with a key.
Parameters:
key (K): The key to retrieveReturns: V | undefined - The value, or undefined if not found
Example:
const value = bigMap.get('user123');
Checks if a key exists in the map.
Parameters:
key (K): The key to checkReturns: boolean - True if the key exists, false otherwise
Example:
if (bigMap.has('user123')) {
console.log('User exists');
}
Deletes a key-value pair from the map.
Parameters:
key (K): The key to deleteReturns: boolean - True if the entry was deleted, false if the key was not found
Example:
const deleted = bigMap.delete('user123');
Removes all entries from the map.
Returns: void
Example:
bigMap.clear();
console.log(bigMap.size); // 0
Executes a provided function once for each key-value pair.
Parameters:
callbackfn (function): Function to execute for each entry
value (V): The value of the current entrykey (K): The key of the current entrymap (Map<K, V>): The BigMap instancethisArg (optional): Value to use as this when executing the callbackReturns: void
Example:
bigMap.forEach((value, key) => {
console.log(`${key}: ${value}`);
});
// With custom context
const context = { total: 0 };
bigMap.forEach(function(value) {
this.total += value;
}, context);
Returns an iterator of all keys in the map.
Returns: IterableIterator<K>
Example:
for (const key of bigMap.keys()) {
console.log(key);
}
Returns an iterator of all values in the map.
Returns: IterableIterator<V>
Example:
for (const value of bigMap.values()) {
console.log(value);
}
Returns an iterator of all key-value pairs in the map.
Returns: IterableIterator<[K, V]>
Example:
for (const [key, value] of bigMap.entries()) {
console.log(key, value);
}
Returns an iterator for the map (same as entries()). Enables for...of loops.
Returns: IterableIterator<[K, V]>
Example:
for (const [key, value] of bigMap) {
console.log(key, value);
}
Gets the internal Map instance for a specific key.
Parameters:
key (K): The key to find the store forReturns: Map<K, V> - The internal Map instance
Example:
const store = bigMap.getStore('user123');
Gets the internal Map instance at a specific index.
Parameters:
index (number): The index of the Map to retrieve (0 to storeSize - 1)Returns: Map<K, V> - The Map at the specified index
Throws: Error if index is out of bounds
Example:
const firstMap = bigMap.getStoreMap(0);
Initializes the internal store with empty Map instances. Called automatically during construction.
Returns: void
Type definition for custom hash functions.
type StoreHashFunction = (key: string, storeSize: number) => number;
Parameters:
key (string): The key to hash (converted to string)storeSize (number): The number of stores (adjusted for zero-based index)Returns: number - The index of the store to use (0 to storeSize - 1)
The default hash function using DJB2 algorithm from Hashery:
Example:
import { defaultHashFunction } from '@keyv/bigmap';
const index = defaultHashFunction('myKey', 4);
DJB2 hash algorithm implementation.
Parameters:
string (string): The string to hashmin (number): Minimum value. Default: 0max (number): Maximum value. Default: 10Returns: number - Hash value within the specified range
Example:
import { djb2Hash } from '@keyv/bigmap';
const hash = djb2Hash('myKey', 0, 10);
Please see our contributing guide.
FAQs
Bigmap for Keyv
The npm package @keyv/bigmap receives a total of 3,156,951 weekly downloads. As such, @keyv/bigmap popularity was classified as popular.
We found that @keyv/bigmap demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Join Socket for live demos, rooftop happy hours, and one-on-one meetings during BSidesSF and RSA 2026 in San Francisco.

Research
/Security News
Malicious Packagist packages disguised as Laravel utilities install an encrypted PHP RAT via Composer dependencies, enabling remote access and C2 callbacks.

Research
/Security News
OpenVSX releases of Aqua Trivy 1.8.12 and 1.8.13 contained injected natural-language prompts that abuse local AI coding agents for system inspection and potential data exfiltration.