lz4 compression for Keyv
lz4 compression for Keyv.
lz4 is a data compression algorithm that is designed to be fast and efficient and is provided by the package lz4-napi.
Table of Contents
Install
npm install --save keyv @keyv/compress-lz4
Usage
import Keyv from 'keyv';
import KeyvLz4 from '@keyv/compress-lz4';
const keyv = new Keyv({store: new Map(), compression: new KeyvLz4()});
API
@keyv/compress-lz4([dictionary])
dictionary
An optional string that lz4-napi uses as the dictionary for both compression and decompression. Use the same dictionary to read values that were written with it.
const keyv = new Keyv({ compression: new KeyvLz4('my-dictionary') });
Migrating to v6
KeyvLz4implements the v6KeyvCompressionAdapterinterface:compress(value: string): Promise<string>anddecompress(value: string): Promise<string>. Keyv passes it the whole serialized entry, andcompressreturns a base64 string instead of aUint8Array.- The v5
serializeanddeserializemethods were removed. The constructor still takes an optional dictionary string. - Values that Keyv v5 wrote with
@keyv/compress-lz4can't be read by v6. v5 compressed only thevaluefield inside the JSON envelope, so an old entry doesn't decode. Keyv emitserror, andgetreturnsundefinedwhen anerrorlistener is attached or rejects when none is. Treat a compressed store as a cache that v6 repopulates, or read the old entries with v5 and write them again with v6. See the v5 to v6 migration guide. - Compression needs serialization, which is on by default. With
serialization: false, Keyv stores values without compressing them.