Skip to content

Commit f2e9dd6

Browse files
author
Artem
committed
Merge branch 'main' into feature/RI-5036/optimize-docker-image
# Conflicts: # redisinsight/api/config/default.ts # redisinsight/api/src/modules/bulk-actions/bulk-import.service.ts # redisinsight/api/test/helpers/remote-server.ts # tests/e2e/package.json
2 parents 3bd6e1c + ac19ddc commit f2e9dd6

File tree

394 files changed

+5555
-3052
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

394 files changed

+5555
-3052
lines changed

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
[![Discord](https://img.shields.io/discord/697882427875393627?style=flat-square)](https://discord.gg/QUkjSsk)
88

99

10-
RedisInsight is a visual tool that provides capabilities to design, develop and optimize your Redis application.
10+
RedisInsight is a visual tool that provides capabilities to design, develop, and optimize your Redis application.
1111
Query, analyse and interact with your Redis data. [Download it here](https://redis.com/redis-enterprise/redis-insight/#insight-form)!
1212

1313
![RedisInsight Browser screenshot](/.github/redisinsight_browser.png)
@@ -23,26 +23,26 @@ RedisInsight is an intuitive and efficient GUI for Redis, allowing you to intera
2323
* Browse, filter, visualise your key-value Redis data structures and see key values in different formats (including JSON, Hex, ASCII, etc.)
2424
* CRUD support for Lists, Hashes, Strings, Sets, Sorted Sets, and Streams
2525
* CRUD support for [RedisJSON](https://oss.redis.com/redisjson/)
26+
* Interactive tutorials to learn easily, among other things, how to leverage the native JSON data structure supporting structured querying and full-text search, including vector similarity search for your AI use cases
27+
* Contextualised recommendations to optimize performance and memory usage. The list of recommendations gets updated as you interact with your database
2628
* Profiler - analyze every command sent to Redis in real-time
2729
* SlowLog - analyze slow operations in Redis instances based on the [Slowlog](https://github.com/RedisInsight/RedisInsight/releases#:~:text=results%20of%20the-,Slowlog,-command%20to%20analyze) command
2830
* Pub/Sub - support for [Redis pub/sub](https://redis.io/docs/manual/pubsub/), enabling subscription to channels and posting messages to channels
2931
* Bulk actions - Delete the keys in bulk based on the filters set in Browser or Tree view
30-
* Introducing Workbench - advanced command line interface with intelligent command auto-complete, complex data visualizations and support for the raw mode
32+
* Workbench - advanced command line interface with intelligent command auto-complete, complex data visualizations and support for the raw mode
3133
* Command auto-complete support for [RediSearch](https://oss.redis.com/redisearch/), [RedisJSON](https://oss.redis.com/redisjson/), [RedisGraph](https://oss.redis.com/redisgraph/), [RedisTimeSeries](https://oss.redis.com/redistimeseries/), [RedisAI](https://oss.redis.com/redisai/)
32-
* Visualizations of your [RediSearch](https://oss.redis.com/redisearch/) index, queries, and aggregations
33-
* Ability to build your own data visualization plugins
34-
* Built-in click-through guides for Redis capabilities
35-
* Officially supported for Redis OSS, [Redis Cloud](https://redis.com/try-free/). Works with Microsoft Azure Cache for Redis (official support upcoming).
36-
* Available for macOS (including M1), Windows and Linux
34+
* Visualizations of your [RediSearch](https://oss.redis.com/redisearch/) index, queries, and aggregations. Ability to build [your own data visualization plugins](https://github.com/RedisInsight/Packages)
35+
* Officially supported for Redis OSS, [Redis Cloud](https://redis.com/try-free/). Works with Microsoft Azure Cache for Redis (official support upcoming)
3736

3837
Check out the [release notes](https://docs.redis.com/latest/ri/release-notes/).
3938

4039
## Get started with RedisInsight
4140

42-
This repository includes the code for the GA version of RedisInsight 2.0. Check out the [blogpost](https://redis.com/blog/introducing-redisinsight-2/) announcing it.
41+
This repository includes the code for RedisInsight. Check out the [blogpost](https://redis.com/blog/introducing-redisinsight-2/) announcing it.
4342

4443
### Installable
4544
Available to download for free from [here](https://redis.com/redis-enterprise/redis-insight/#insight-form).
45+
Supports Windows, macOS (including M1), and Linux.
4646

4747
### Build
4848
Alternatively you can also build from source. See our wiki for instructions.

redisinsight/api/config/default.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export default {
6060
tlsKey: process.env.RI_SERVER_TLS_KEY,
6161
staticContent: !!process.env.RI_SERVE_STATICS || false,
6262
buildType: process.env.RI_BUILD_TYPE || 'DOCKER_ON_PREMISE',
63-
appVersion: process.env.RI_APP_VERSION || '2.36.0',
63+
appVersion: process.env.RI_APP_VERSION || '2.40.0',
6464
requestTimeout: parseInt(process.env.RI_REQUEST_TIMEOUT, 10) || 25000,
6565
excludeRoutes: [],
6666
excludeAuthRoutes: [],
@@ -77,7 +77,7 @@ export default {
7777
redis_clients: {
7878
idleSyncInterval: parseInt(process.env.RI_CLIENTS_IDLE_SYNC_INTERVAL, 10) || 1000 * 60 * 60, // 1hr
7979
maxIdleThreshold: parseInt(process.env.RI_CLIENTS_MAX_IDLE_THRESHOLD, 10) || 1000 * 60 * 60, // 1hr
80-
retryTimes: parseInt(process.env.RI_CLIENTS_RETRY_TIMES, 10) || 5,
80+
retryTimes: parseInt(process.env.RI_CLIENTS_RETRY_TIMES, 10) || 3,
8181
retryDelay: parseInt(process.env.RI_CLIENTS_RETRY_DELAY, 10) || 500,
8282
maxRetriesPerRequest: parseInt(process.env.RI_CLIENTS_MAX_RETRIES_PER_REQUEST, 10) || 1,
8383
},

redisinsight/api/config/features-config.json

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": 2.3402,
2+
"version": 2.3403,
33
"features": {
44
"insightsRecommendations": {
55
"flag": true,
@@ -47,6 +47,22 @@
4747
}
4848
}
4949
},
50+
"cloudSsoRecommendedSettings": {
51+
"flag": true,
52+
"perc": [[0, 50]],
53+
"filters": [
54+
{
55+
"name": "config.server.buildType",
56+
"value": "ELECTRON",
57+
"cond": "eq"
58+
},
59+
{
60+
"name": "agreements.analytics",
61+
"value": true,
62+
"cond": "eq"
63+
}
64+
]
65+
},
5066
"redisModuleFilter": {
5167
"flag": true,
5268
"perc": [[0, 100]],

redisinsight/api/config/swagger.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const SWAGGER_CONFIG: Omit<OpenAPIObject, 'paths'> = {
55
info: {
66
title: 'RedisInsight Backend API',
77
description: 'RedisInsight Backend API',
8-
version: '2.36.0',
8+
version: '2.40.0',
99
},
1010
tags: [],
1111
};

redisinsight/api/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "redisinsight-api",
3-
"version": "2.36.0",
3+
"version": "2.40.0",
44
"description": "RedisInsight API",
55
"private": true,
66
"author": {
@@ -42,7 +42,8 @@
4242
"word-wrap": "1.2.4",
4343
"mocha/minimatch": "^3.0.5",
4444
"@nestjs/platform-socket.io/socket.io": "^4.7.1",
45-
"**/semver": "^7.5.2"
45+
"**/semver": "^7.5.2",
46+
"winston-daily-rotate-file/**/file-stream-rotator": "^1.0.0"
4647
},
4748
"dependencies": {
4849
"@nestjs/common": "^9.0.11",
@@ -59,6 +60,7 @@
5960
"analytics-node": "^4.0.1",
6061
"axios": "^0.25.0",
6162
"body-parser": "^1.19.0",
63+
"busboy": "^1.6.0",
6264
"class-transformer": "^0.2.3",
6365
"class-validator": "^0.14.0",
6466
"connect-timeout": "^1.9.0",

redisinsight/api/src/__mocks__/feature.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,12 @@ export const mockFeatureSso = Object.assign(new Feature(), {
182182
redisStackPreview: [
183183
{
184184
provider: 'AWS',
185-
regions: ['us-east-2', 'ap-southeast-1', 'sa-east-1']
185+
regions: ['us-east-2', 'ap-southeast-1', 'sa-east-1'],
186186
},
187187
{
188188
provider: 'GCP',
189-
regions: ['asia-northeast1', 'europe-west1', 'us-central1']
190-
}
189+
regions: ['asia-northeast1', 'europe-west1', 'us-central1'],
190+
},
191191
],
192192
},
193193
},

redisinsight/api/src/constants/error-messages.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ export default {
1616
CONNECTION_TIMEOUT:
1717
'The connection has timed out, please check the connection details.',
1818
SERVER_CLOSED_CONNECTION: 'Server closed the connection.',
19+
UNABLE_TO_ESTABLISH_CONNECTION: 'Unable to establish connection.',
20+
RECONNECTING_TO_DATABASE: 'Reconnecting to the redis database.',
1921
AUTHENTICATION_FAILED: () => 'Failed to authenticate, please check the username or password.',
2022
INCORRECT_DATABASE_URL: (url) => `Could not connect to ${url}, please check the connection details.`,
2123
INCORRECT_CERTIFICATES: (url) => `Could not connect to ${url}, please check the CA or Client certificate.`,

redisinsight/api/src/modules/analytics/analytics.service.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,10 @@ describe('AnalyticsService', () => {
196196
event: TelemetryEvents.ApplicationStarted,
197197
eventData: {},
198198
nonTracking: false,
199+
traits: {
200+
telemetry: 'will be overwritten',
201+
custom: 'trait',
202+
},
199203
});
200204

201205
expect(mockAnalyticsPage).toHaveBeenCalledWith({
@@ -205,6 +209,7 @@ describe('AnalyticsService', () => {
205209
context: {
206210
traits: {
207211
telemetry: Telemetry.Enabled,
212+
custom: 'trait',
208213
},
209214
},
210215
properties: {

redisinsight/api/src/modules/analytics/analytics.service.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export interface ITelemetryEvent {
1313
event: string;
1414
eventData: Object;
1515
nonTracking: boolean;
16+
traits?: Object;
1617
}
1718

1819
export interface ITelemetryInitEvent {
@@ -43,7 +44,7 @@ export class AnalyticsService {
4344

4445
private appVersion: string = '2.0.0';
4546

46-
private analytics;
47+
private analytics: Analytics;
4748

4849
constructor(
4950
private settingsService: SettingsService,
@@ -80,7 +81,9 @@ export class AnalyticsService {
8081
// for analytics is granted or not.
8182
// If permissions not granted
8283
// anonymousId will includes "00000000-0000-0000-0000-000000000001" value without any user identifiers.
83-
const { event, eventData, nonTracking } = payload;
84+
const {
85+
event, eventData, nonTracking, traits = {},
86+
} = payload;
8487
const isAnalyticsGranted = await this.checkIsAnalyticsGranted();
8588

8689
if (isAnalyticsGranted || nonTracking) {
@@ -90,8 +93,9 @@ export class AnalyticsService {
9093
event,
9194
context: {
9295
traits: {
96+
...traits,
9397
telemetry: isAnalyticsGranted ? Telemetry.Enabled : Telemetry.Disabled,
94-
}
98+
},
9599
},
96100
properties: {
97101
...eventData,
@@ -118,7 +122,9 @@ export class AnalyticsService {
118122
// user in any way. When `nonTracking` is True, the event is sent regardless of whether the user's permission
119123
// for analytics is granted or not.
120124
// If permissions not granted anonymousId includes "UNSET" value without any user identifiers.
121-
const { event, eventData, nonTracking } = payload;
125+
const {
126+
event, eventData, nonTracking, traits = {},
127+
} = payload;
122128
const isAnalyticsGranted = await this.checkIsAnalyticsGranted();
123129

124130
if (isAnalyticsGranted || nonTracking) {
@@ -128,8 +134,9 @@ export class AnalyticsService {
128134
integrations: { Amplitude: { session_id: this.sessionId } },
129135
context: {
130136
traits: {
137+
...traits,
131138
telemetry: isAnalyticsGranted ? Telemetry.Enabled : Telemetry.Disabled,
132-
}
139+
},
133140
},
134141
properties: {
135142
...eventData,

redisinsight/api/src/modules/analytics/dto/analytics.dto.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,13 @@ export class SendEventDto {
3636
@IsOptional()
3737
@IsBoolean()
3838
nonTracking: boolean = false;
39+
40+
@ApiPropertyOptional({
41+
description: 'User data.',
42+
type: Object,
43+
example: { telemetry: true },
44+
})
45+
@IsOptional()
46+
@ValidateNested()
47+
traits: Object = {};
3948
}

0 commit comments

Comments
 (0)