From c90c473529b6ece7b973f512e5d9a1ac5088d295 Mon Sep 17 00:00:00 2001 From: xierongbin Date: Tue, 30 Apr 2024 15:00:41 +0800 Subject: [PATCH 1/5] feat(command): add zadd zrem zrangewithscores --- package.json | 2 +- src/lib/Commands.ts | 47 +++++++++++++++++++++++++++++++++++++++++++++ src/lib/Common.ts | 24 +++++++++++++++++++++++ 3 files changed, 72 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 520feb4..8d80fb9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@litert/redis", - "version": "3.0.1", + "version": "3.0.2", "description": "A redis protocol implement for Node.js.", "main": "./lib/index.js", "scripts": { diff --git a/src/lib/Commands.ts b/src/lib/Commands.ts index be96912..e23456c 100644 --- a/src/lib/Commands.ts +++ b/src/lib/Commands.ts @@ -2085,6 +2085,53 @@ export const COMMANDS: Record = { } }, + /** + * Command: zRem + * @see https://redis.io/commands/zRem + */ + 'zRem': { + prepare: createDefaultPreparer('ZREM') + }, + + /** + * Command: zAdd + * @see https://redis.io/commands/zAdd + */ + 'zAdd': { + prepare: createDefaultPreparer('ZADD'), + process: isIntegerOne + }, + + /** + * Command: zRange + * @see https://redis.io/commands/zRange + */ + 'zRangeWithScores': { + prepare: (key: string, start: number, stop: number) => { + + return { + 'cmd': 'ZRANGE', + 'args': [key, start, stop, 'WITHSCORES'] + }; + }, + process: U.pairList2NullableStringDict + }, + + /** + * Command: zRange + * @see https://redis.io/commands/zRange + */ + 'zRangeWithScores$': { + prepare: (key: string, start: number, stop: number) => { + + return { + 'cmd': 'ZRANGE', + 'args': [key, start, stop, 'WITHSCORES'] + }; + }, + process: U.pairList2NullableBufferDict + }, + /** * Command: pfAdd * @see https://redis.io/commands/pfAdd diff --git a/src/lib/Common.ts b/src/lib/Common.ts index 9e7b8b3..ffa4144 100644 --- a/src/lib/Common.ts +++ b/src/lib/Common.ts @@ -1221,6 +1221,30 @@ export interface ICommandAPIs { */ rPushX(key: string, values: Array): Promise; + /** + * Command: zAdd + * @see https://redis.io/commands/zAdd + */ + zAdd(key: string, field: string, value: string | Buffer): Promise; + + /** + * Command: zRem + * @see https://redis.io/commands/zRem + */ + zRem(key: string, values: Array): Promise; + + /** + * Command: zRange + * @see https://redis.io/commands/zRange + */ + zRangeWithScores(key: string, start: number, stop: number): Promise>; + + /** + * Command: zRange + * @see https://redis.io/commands/zRange + */ + zRangeWithScores$(key: string, start: number, stop: number): Promise>; + /** * Command: pfAdd * @see https://redis.io/commands/pfAdd From 9cc76084083e869dcc814fb981a4d5df51f7d11d Mon Sep 17 00:00:00 2001 From: xierongbin Date: Tue, 30 Apr 2024 15:41:33 +0800 Subject: [PATCH 2/5] feat(command): modify review issue --- src/lib/Commands.ts | 30 ++++++++++++++++++++++++++++-- src/lib/Common.ts | 8 ++++---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/lib/Commands.ts b/src/lib/Commands.ts index e23456c..6a7e536 100644 --- a/src/lib/Commands.ts +++ b/src/lib/Commands.ts @@ -2114,7 +2114,20 @@ export const COMMANDS: Record = { 'args': [key, start, stop, 'WITHSCORES'] }; }, - process: U.pairList2NullableStringDict + process: (items: Array<[number, Buffer]>): Array<{ member: string; score: number; }> => { + + const ret: Array<{ member: string; score: number; }> = []; + + for (let i = 0 ; i < items.length; i = i + 2) { + + ret.push({ + 'member': items[i][1].toString(), + 'score': parseFloat(items[i + 1][1].toString()) + }); + } + + return ret; + } }, /** @@ -2129,7 +2142,20 @@ export const COMMANDS: Record = { 'args': [key, start, stop, 'WITHSCORES'] }; }, - process: U.pairList2NullableBufferDict + process: (items: Array<[number, Buffer]>): Array<{ member: Buffer; score: number; }> => { + + const ret: Array<{ member: Buffer; score: number; }> = []; + + for (let i = 0 ; i < items.length; i = i + 2) { + + ret.push({ + 'member': items[i][1], + 'score': parseFloat(items[i + 1][1].toString()) + }); + } + + return ret; + } }, /** diff --git a/src/lib/Common.ts b/src/lib/Common.ts index ffa4144..0a0f228 100644 --- a/src/lib/Common.ts +++ b/src/lib/Common.ts @@ -1225,25 +1225,25 @@ export interface ICommandAPIs { * Command: zAdd * @see https://redis.io/commands/zAdd */ - zAdd(key: string, field: string, value: string | Buffer): Promise; + zAdd(key: string, member: string, score: string | Buffer): Promise; /** * Command: zRem * @see https://redis.io/commands/zRem */ - zRem(key: string, values: Array): Promise; + zRem(key: string, members: Array): Promise; /** * Command: zRange * @see https://redis.io/commands/zRange */ - zRangeWithScores(key: string, start: number, stop: number): Promise>; + zRangeWithScores(key: string, start: number, stop: number): Promise>; /** * Command: zRange * @see https://redis.io/commands/zRange */ - zRangeWithScores$(key: string, start: number, stop: number): Promise>; + zRangeWithScores$(key: string, start: number, stop: number): Promise>; /** * Command: pfAdd From fc34614988bcaee095de8792c7400a9419f956f1 Mon Sep 17 00:00:00 2001 From: xierongbin Date: Tue, 30 Apr 2024 15:49:55 +0800 Subject: [PATCH 3/5] feat(service): retrive version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8d80fb9..520feb4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@litert/redis", - "version": "3.0.2", + "version": "3.0.1", "description": "A redis protocol implement for Node.js.", "main": "./lib/index.js", "scripts": { From 0f328f35f3f391f8e23fe1faa7ec6186e7f02615 Mon Sep 17 00:00:00 2001 From: xierongbin Date: Tue, 30 Apr 2024 15:50:04 +0800 Subject: [PATCH 4/5] 3.0.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9d2cca4..7b9b276 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@litert/redis", - "version": "3.0.1", + "version": "3.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@litert/redis", - "version": "3.0.1", + "version": "3.0.2", "license": "Apache-2.0", "devDependencies": { "@commitlint/cli": "^18.2.0", diff --git a/package.json b/package.json index 520feb4..8d80fb9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@litert/redis", - "version": "3.0.1", + "version": "3.0.2", "description": "A redis protocol implement for Node.js.", "main": "./lib/index.js", "scripts": { From aee7f461c24c5f130ba4cf3348fbc71d58d37fec Mon Sep 17 00:00:00 2001 From: xierongbin Date: Tue, 30 Apr 2024 16:37:17 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix(command):=20=E4=BF=AE=E5=A4=8DZRem?= =?UTF-8?q?=E5=92=8CSRem=E5=91=BD=E4=BB=A4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/examples/multi.ts | 26 ++++++++++++++++++++++++++ src/lib/Commands.ts | 4 ++-- src/lib/Common.ts | 2 +- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/examples/multi.ts b/src/examples/multi.ts index d6ec84f..950a389 100644 --- a/src/examples/multi.ts +++ b/src/examples/multi.ts @@ -16,8 +16,34 @@ /* eslint-disable no-console */ import * as Redis from '../lib'; +export async function testZ(): Promise { + + const cli = Redis.createCommandClient({}); + + await cli.connect(); + + console.log(await cli.zAdd('testZSet', 100, 'z100')); + console.log(await cli.zAdd('testZSet', 99, 'z99')); + console.log(await cli.zAdd('testZSet', 97, 'z97')); + console.log(await cli.zAdd('testZSet', 98, 'z98')); + console.log(await cli.zAdd('testZSet', 95, 'z95')); + console.log(await cli.zAdd('testZSet', 39, 'z39')); + + console.log(await cli.zRangeWithScores('testZSet', 0, 3)); + + console.log(await cli.zRem('testZSet', ['z39', 'z97'])); + + console.log(await cli.zRangeWithScores('testZSet', 0, 3)); + + await cli.close(); +} + (async () => { + await testZ(); + + return; + const cli = Redis.createCommandClient({}); await cli.connect(); diff --git a/src/lib/Commands.ts b/src/lib/Commands.ts index 6a7e536..94bc523 100644 --- a/src/lib/Commands.ts +++ b/src/lib/Commands.ts @@ -1627,7 +1627,7 @@ export const COMMANDS: Record = { * @see https://redis.io/commands/sRem */ 'sRem': { - prepare: createDefaultPreparer('SREM') + prepare: (key: string, members: Array) => ({ args: [key, ...members], cmd: 'SREM' }) }, /** @@ -2090,7 +2090,7 @@ export const COMMANDS: Record = { * @see https://redis.io/commands/zRem */ 'zRem': { - prepare: createDefaultPreparer('ZREM') + prepare: (key: string, members: Array) => ({ args: [key, ...members], cmd: 'ZREM' }) }, /** diff --git a/src/lib/Common.ts b/src/lib/Common.ts index 0a0f228..03b82a5 100644 --- a/src/lib/Common.ts +++ b/src/lib/Common.ts @@ -1225,7 +1225,7 @@ export interface ICommandAPIs { * Command: zAdd * @see https://redis.io/commands/zAdd */ - zAdd(key: string, member: string, score: string | Buffer): Promise; + zAdd(key: string, score: number, member: string | Buffer): Promise; /** * Command: zRem