@valkey/valkey-glide
Version:
General Language Independent Driver for the Enterprise (GLIDE) for Valkey
70 lines (69 loc) • 2.25 kB
TypeScript
/**
* Copyright Valkey GLIDE Project Contributors - SPDX Identifier: Apache-2.0
*/
/**
* Compression backend to use for automatic value compression.
*/
export declare enum CompressionBackend {
/** Use zstd compression backend. */
ZSTD = 0,
/** Use lz4 compression backend. */
LZ4 = 1
}
/**
* Configuration for automatic compression of values sent to the server.
*
* NOTE: This is an experimental feature. The API may change in future releases.
*
* When compression is enabled, values that meet the minimum size threshold
* will be automatically compressed before being sent to the server and
* decompressed when retrieved.
*
* @example
* ```typescript
* // Enable compression with defaults (ZSTD, 64 byte threshold)
* const config: CompressionConfiguration = { enabled: true };
*
* // Enable compression with LZ4 backend and custom threshold
* const config: CompressionConfiguration = {
* enabled: true,
* backend: CompressionBackend.LZ4,
* minCompressionSize: 128,
* };
*
* // Enable compression with custom max decompressed size limit
* const config: CompressionConfiguration = {
* enabled: true,
* maxDecompressedSize: 100 * 1024 * 1024, // 100MB limit
* };
* ```
*/
export interface CompressionConfiguration {
/**
* Whether compression is enabled. Defaults to false.
*/
enabled: boolean;
/**
* The compression backend to use. Defaults to ZSTD.
*/
backend?: CompressionBackend;
/**
* The compression level. If not set, the backend's default level is used.
* Valid ranges are backend-specific and validated by the Rust core.
* ZSTD default is 3, LZ4 default is 0.
*/
compressionLevel?: number;
/**
* Minimum size in bytes for values to be compressed.
* Values smaller than this will not be compressed.
* Must be at least 6 bytes. Defaults to 64 bytes.
*/
minCompressionSize?: number;
/**
* Maximum allowed size in bytes for decompressed data.
* This limit prevents decompression bombs (maliciously crafted compressed data
* that expands to huge sizes).
* If not set, defaults to 512MB (matching Valkey's proto-max-bulk-len).
*/
maxDecompressedSize?: number;
}