Skip to content

Commit 77ab5f9

Browse files
author
arthosofteq
authored
Merge pull request #787 from RedisInsight/feature/RI-2642-total-keys-per-db
Do not filter by 0 keys.
2 parents 87408ad + ca8f89a commit 77ab5f9

File tree

2 files changed

+9
-13
lines changed

2 files changed

+9
-13
lines changed

redisinsight/api/src/modules/shared/services/instances-business/overview.service.spec.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ export const mockDatabaseOverview: DatabaseOverview = {
6262
totalKeys: 2,
6363
totalKeysPerDb: {
6464
db0: 1,
65-
db2: 1,
6665
},
6766
connectedClients: 1,
6867
opsPerSecond: 1,
@@ -227,7 +226,6 @@ describe('OverviewService', () => {
227226
totalKeys: 6,
228227
totalKeysPerDb: {
229228
db0: 3,
230-
db2: 3,
231229
},
232230
usedMemory: 3,
233231
networkInKbps: 6,
@@ -282,7 +280,6 @@ describe('OverviewService', () => {
282280
totalKeys: 6,
283281
totalKeysPerDb: {
284282
db0: 3,
285-
db2: 3,
286283
},
287284
usedMemory: 3,
288285
networkInKbps: 6,

redisinsight/api/src/modules/shared/services/instances-business/overview.service.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,17 @@ export class OverviewService {
2828
client: IORedis.Redis | IORedis.Cluster,
2929
): Promise<DatabaseOverview> {
3030
let nodesInfo = [];
31+
let currentDbIndex = 0;
32+
3133
if (client instanceof IORedis.Cluster) {
34+
currentDbIndex = get(client, ['options', 'db'], 0);
3235
nodesInfo = await this.getNodesInfo(client);
3336
} else {
37+
currentDbIndex = get(client, ['options', 'db'], 0);
3438
nodesInfo = [await this.getNodeInfo(client)];
3539
}
3640

37-
const [totalKeys, totalKeysPerDb] = this.calculateTotalKeys(nodesInfo);
41+
const [totalKeys, totalKeysPerDb] = this.calculateTotalKeys(nodesInfo, currentDbIndex);
3842
return {
3943
version: this.getVersion(nodesInfo),
4044
totalKeys,
@@ -192,9 +196,10 @@ export class OverviewService {
192196
* Sum of keys for primary shards
193197
* In case when shard has multiple logical databases shard total keys = sum of all dbs keys
194198
* @param nodes
199+
* @param index
195200
* @private
196201
*/
197-
private calculateTotalKeys(nodes = []): [number, Record<string, number>] {
202+
private calculateTotalKeys(nodes = [], index: number): [number, Record<string, number>] {
198203
if (!this.isMetricsAvailable(nodes, 'keyspace', [undefined])) {
199204
return [undefined, undefined];
200205
}
@@ -221,15 +226,9 @@ export class OverviewService {
221226
);
222227
});
223228

224-
// filter 0 values
225-
Object.keys(totalKeysPerDb).forEach((key) => {
226-
if (!totalKeysPerDb[key]) {
227-
delete totalKeysPerDb[key];
228-
}
229-
});
230-
231229
const totalKeys = totalKeysPerDb ? sum(Object.values(totalKeysPerDb)) : undefined;
232-
return [totalKeys, Object.keys(totalKeysPerDb).length > 1 ? totalKeysPerDb : undefined];
230+
const dbIndexKeys = totalKeysPerDb[`db${index}`] || 0;
231+
return [totalKeys, dbIndexKeys === totalKeys ? undefined : { [`db${index}`]: dbIndexKeys }];
233232
} catch (e) {
234233
return [null, null];
235234
}

0 commit comments

Comments
 (0)