Skip to content

Commit 97e78b2

Browse files
committed
Support the MAXAGE option for CLIENT KILL
Issue redis#2706 Starting with Redis 7.6, the CLIENT KILL command has a new option, called MAXAGE, to kill clients older than a given age. Add support for this new option.
1 parent dbf8f59 commit 97e78b2

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

packages/client/lib/commands/CLIENT_KILL.spec.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,5 +106,15 @@ describe('CLIENT KILL', () => {
106106
['CLIENT', 'KILL', 'TYPE', 'master', 'SKIPME']
107107
);
108108
});
109+
110+
it('MAX_AGE', () => {
111+
assert.deepEqual(
112+
transformArguments({
113+
filter: ClientKillFilters.MAX_AGE,
114+
maxAge: 5
115+
}),
116+
['CLIENT', 'KILL', 'MAXAGE', '5']
117+
);
118+
});
109119
});
110120
});

packages/client/lib/commands/CLIENT_KILL.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ export enum ClientKillFilters {
66
ID = 'ID',
77
TYPE = 'TYPE',
88
USER = 'USER',
9-
SKIP_ME = 'SKIPME'
9+
SKIP_ME = 'SKIPME',
10+
MAX_AGE = 'MAXAGE'
1011
}
1112

1213
interface KillFilter<T extends ClientKillFilters> {
@@ -37,7 +38,11 @@ type KillSkipMe = ClientKillFilters.SKIP_ME | (KillFilter<ClientKillFilters.SKIP
3738
skipMe: boolean;
3839
});
3940

40-
type KillFilters = KillAddress | KillLocalAddress | KillId | KillType | KillUser | KillSkipMe;
41+
interface KillMaxAge extends KillFilter<ClientKillFilters.MAX_AGE> {
42+
maxAge: number;
43+
}
44+
45+
type KillFilters = KillAddress | KillLocalAddress | KillId | KillType | KillUser | KillSkipMe | KillMaxAge;
4146

4247
export function transformArguments(filters: KillFilters | Array<KillFilters>): RedisCommandArguments {
4348
const args = ['CLIENT', 'KILL'];
@@ -61,7 +66,7 @@ function pushFilter(args: RedisCommandArguments, filter: KillFilters): void {
6166

6267
args.push(filter.filter);
6368

64-
switch(filter.filter) {
69+
switch (filter.filter) {
6570
case ClientKillFilters.ADDRESS:
6671
args.push(filter.address);
6772
break;
@@ -83,12 +88,16 @@ function pushFilter(args: RedisCommandArguments, filter: KillFilters): void {
8388
break;
8489

8590
case ClientKillFilters.USER:
86-
args.push(filter.username);
87-
break;
91+
args.push(filter.username);
92+
break;
8893

8994
case ClientKillFilters.SKIP_ME:
9095
args.push(filter.skipMe ? 'yes' : 'no');
9196
break;
97+
98+
case ClientKillFilters.MAX_AGE:
99+
args.push(filter.maxAge.toString());
100+
break;
92101
}
93102
}
94103

0 commit comments

Comments
 (0)