1
0
mirror of https://github.com/redis/node-redis.git synced 2025-12-15 23:55:38 +03:00
Files
node-redis/packages/client/lib/commands/GEOSEARCHSTORE.ts
Bobby I. f01f1014cb Client Side Caching (#2947)
* CSC POC ontop of Parser

* add csc file that weren't merged after patch

* address review comments

* nits to try and fix github

* last change from review

* Update client-side cache and improve documentation

* Add client side caching RESP3 validation

* Add documentation for RESP and unstableResp3 options

* Add comprehensive cache statistics

The `CacheStats` class provides detailed metrics like hit/miss counts,
load success/failure counts, total load time, and eviction counts.
It also offers derived metrics such as hit/miss rates, load failure rate,
and average load penalty. The design is inspired by Caffeine.

`BasicClientSideCache` now uses a `StatsCounter` to accumulate these
statistics, exposed via a new `stats()` method. The previous
`cacheHits()` and `cacheMisses()` methods have been removed.

A `recordStats` option (default: true) in `ClientSideCacheConfig`
allows disabling statistics collection.

---------

Co-authored-by: Shaya Potter <shaya@redislabs.com>
2025-05-19 15:11:47 +03:00

33 lines
888 B
TypeScript

import { CommandParser } from '../client/parser';
import { RedisArgument, NumberReply, Command } from '../RESP/types';
import { GeoSearchFrom, GeoSearchBy, GeoSearchOptions, parseGeoSearchArguments } from './GEOSEARCH';
export interface GeoSearchStoreOptions extends GeoSearchOptions {
STOREDIST?: boolean;
}
export default {
IS_READ_ONLY: false,
parseCommand(
parser: CommandParser,
destination: RedisArgument,
source: RedisArgument,
from: GeoSearchFrom,
by: GeoSearchBy,
options?: GeoSearchStoreOptions
) {
parser.push('GEOSEARCHSTORE');
if (destination !== undefined) {
parser.pushKey(destination);
}
parseGeoSearchArguments(parser, source, from, by, options);
if (options?.STOREDIST) {
parser.push('STOREDIST');
}
},
transformReply: undefined as unknown as () => NumberReply
} as const satisfies Command;