Skip to content

Commit a2515ad

Browse files
Merge pull request #92 from redis/main
Releasing new tutorials
2 parents 01e3535 + 0d96ca4 commit a2515ad

14 files changed

+489
-242
lines changed

src/ds/hashes.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ HINCRBY bike:1 price 100
4444
HINCRBY bike:1 price -100
4545
```
4646

47-
New in [Redis Community Edition version 7.4](https://hub.docker.com/layers/redis/redis-stack/7.4.0-v0/images/sha256-3e3c86603a81712d1311bc619ad124de15b2dca2b50722f23a4502b4d4054ba8) is the ability set the expiration time or the remaining time-to-live (TTL) for individual hash fields. This is called hash field expiration (HFE). HFE works just like [key expiration](https://redis.io/docs/latest/develop/using-commands/keyspace/?utm_source=redisinsight&utm_medium=main&utm_campaign=tutorials#key-expiration) and includes the following commands:
47+
Available in [Redis 8](https://hub.docker.com/layers/library/redis/8.0.3/images/sha256-426e6823fb1778e8c49f327f9e5af00e505a7fca726ffe11b7930eb1d99ef5fd) is the ability set the expiration time or the remaining time-to-live (TTL) for individual hash fields. This is called hash field expiration (HFE). HFE works just like [key expiration](https://redis.io/docs/latest/develop/use/keyspace/?utm_source=redisinsight&utm_medium=main&utm_campaign=tutorials#key-expiration) and includes the following commands:
4848

4949
- `hexpire` - set an expiration (time-to-live or TTL) in seconds on a hash key's field(s).
5050
- `hexpireat` - set a TTL as an absolute Unix timestamp (seconds since Unix epoch) on a hash key's field(s).
@@ -80,6 +80,7 @@ HGETALL hash
8080
```
8181
### Resources
8282

83+
- A tutorial on building an [AI assistant](redisinsight:_?tutorialId=ai_assistant) using hash field expiration.
8384
- Hash type [reference page](https://redis.io/docs/latest/develop/data-types/hashes/?utm_source=redisinsight&utm_medium=main&utm_campaign=tutorials).
8485
- Entire set of [Redis hash commands](https://redis.io/commands/?group=hash?utm_source=redisinsight&utm_medium=main&utm_campaign=tutorials).
8586
- Check out [Get started with Redis](https://university.redis.io/learningpath/14q8m6gilfwltm?utm_source=redisinsight&utm_medium=main&utm_campaign=tutorials) learning path on Redis University for an introduction to working with all core data structures in Redis.

src/ds/json/adv-jsonpath.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[JSONPath](https://goessner.net/articles/JsonPath/) expressions help you access specific elements within a JSON document, which is similar to how XPATH works for XML documents.
2-
JSONPath support was added to Redis Stack in version 2.0.
2+
JSONPath support was added to the JSON data structure in version 2.0.
33
Before that, [a legacy form of pathing](https://redis.io/docs/latest/develop/data-types/json/path/?utm_source=redisinsight&utm_medium=app&utm_campaign=json_tutorial#legacy-path-syntax) was supported.
44
Only JSONPath will be discussed in this tutorial.
55

@@ -133,7 +133,7 @@ JSON.GET obj2 $.b[0]
133133
JSON.GET obj2 $.*[0]
134134
```
135135

136-
Redis Stack also supports slice syntax for arrays: `[start:`end`:`step`]`, where `start`, `end`, and `step` are indexes.
136+
The JSON data structure also supports slice syntax for arrays: `[start:`end`:`step`]`, where `start`, `end`, and `step` are indexes.
137137
If the current node is an array, an array containing elements extracted from an array are returned, based on a `start` index, an `end` index, and a `step` index.
138138
Array indexes are zero-based; the first element is index 0. Start Index is inclusive; End index is not inclusive.
139139
The following rules apply:

src/ds/json/intro.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
The JSON capability of Redis Stack provides JavaScript Object Notation (JSON) support for Redis, which allows Redis to function as a document database.
1+
The JSON capability provides JavaScript Object Notation (JSON) support for Redis, which allows Redis to function as a document database.
22
It lets you store, update, and retrieve JSON values in a Redis database, similar to any other Redis data type. Redis JSON also works seamlessly with Search and Query to let you index and query JSON documents.
33

44
Primary features include:
@@ -10,8 +10,8 @@ Primary features include:
1010

1111
### Prerequisites
1212

13-
[Redis Stack](https://redis.io/downloads/?utm_source=redisinsight&utm_medium=app&utm_campaign=json_tutorial) >=7.2.0-v7 \
13+
[Redis 8](https://hub.docker.com/layers/library/redis/8.0.3/images/sha256-426e6823fb1778e8c49f327f9e5af00e505a7fca726ffe11b7930eb1d99ef5fd) or higher \
1414
OR \
1515
[RedisJSON](https://github.com/RedisJSON/RedisJSON/) >=2.6.8 \
1616
OR \
17-
A free Redis Stack instance on [Redis Cloud](https://redis.io/try-free/?utm_source=redisinsight&utm_medium=app&utm_campaign=json_tutorial).
17+
A free Redis instance on [Redis Cloud](https://redis.io/try-free/?utm_source=redisinsight&utm_medium=app&utm_campaign=json_tutorial).

src/ds/json/more-adv-jsonpath.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ JSON.GET obj2 '$.a[?(@!="a")]' // [1,2,3,"b","c",false,true,["a",1],{"a":1},{"b"
112112
#### Relational use cases using regular expression with the `=~` operator
113113

114114
**Note**:
115-
> Redis Stack uses [Rust regular expressions syntax](https://docs.rs/regex/latest/regex/#syntax). Invalid regular expressions are not evaluated.
115+
> The JSON data structure uses [Rust regular expressions syntax](https://docs.rs/regex/latest/regex/#syntax). Invalid regular expressions are not evaluated.
116116
117117
There are two cases:
118118

src/ds/prob/intro.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ The following data structures trade perfect accuracy for extreme memory efficien
4848

4949
### Prerequisites
5050

51-
[Redis Stack Server](https://redis.io/downloads/?utm_source=redisinsight&utm_medium=app&utm_campaign=probabilistic_tutorial) >=7.2.0-v7 \
51+
[Redis 8](https://hub.docker.com/layers/library/redis/8.0.3/images/sha256-426e6823fb1778e8c49f327f9e5af00e505a7fca726ffe11b7930eb1d99ef5fd) or higher \
5252
OR \
5353
[RedisBloom](https://redis.io/docs/latest/develop/data-types/probabilistic/bloom-filter/?utm_source=redisinsight&utm_medium=main&utm_campaign=tutorials) >=2.6.10 \
5454
OR \
55-
A free Redis Stack instance on [Redis Cloud](https://redis.io/try-free/?utm_source=redisinsight&utm_medium=app&utm_campaign=probabilistic_tutorial).
55+
A free Redis instance on [Redis Cloud](https://redis.io/try-free/?utm_source=redisinsight&utm_medium=app&utm_campaign=probabilistic_tutorial).

src/ds/ts/intro.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ You can ingest and query millions of samples and events at the speed of Redis.
1616

1717
### Prerequisites
1818

19-
[Redis Stack Server](https://redis.io/downloads/?utm_source=redisinsight&utm_medium=app&utm_campaign=timeseries_tutorial) >=7.2.0-v7 \
19+
[Redis 8](https://hub.docker.com/layers/library/redis/8.0.3/images/sha256-426e6823fb1778e8c49f327f9e5af00e505a7fca726ffe11b7930eb1d99ef5fd) or higher \
2020
OR \
2121
[RedisTimeSeries](https://redis.io/learn/modules/redistimeseries/?utm_campaign=timeseries_tutorial&utm_medium=app&utm_source=redisinsight) >=1.10.11 \
2222
OR \
23-
A free Redis Stack instance on [Redis Cloud](https://redis.io/try-free/?utm_source=redisinsight&utm_medium=app&utm_campaign=timeseries_tutorial).
23+
A free Redis instance on [Redis Cloud](https://redis.io/try-free/?utm_source=redisinsight&utm_medium=app&utm_campaign=timeseries_tutorial).

src/manifest.json

Lines changed: 129 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,135 @@
3737
}
3838
]
3939
},
40+
{
41+
"type": "group",
42+
"id": "vss",
43+
"label": "Vector search examples",
44+
"args": {
45+
"initialIsOpen": false
46+
},
47+
"children": [
48+
{
49+
"type": "internal-link",
50+
"id": "vss-intro",
51+
"label": "Introduction",
52+
"summary": "Understand how to use Redis as a vector database.",
53+
"args": {
54+
"path": "/vss/intro.md"
55+
}
56+
},
57+
{
58+
"type": "internal-link",
59+
"id": "e-commerce-discovery",
60+
"label": "E-commerce Discovery",
61+
"summary": "Find products by meaning, not just keywords.",
62+
"args": {
63+
"path": "/vss/e-commerce-discovery.md"
64+
}
65+
},
66+
{
67+
"type": "internal-link",
68+
"id": "personalized_recommendations",
69+
"label": "Building personalized recommendations",
70+
"summary": "Suggest movies based on the true meaning of plots or themes.",
71+
"args": {
72+
"path": "/vss/personalized_recommendations.md"
73+
}
74+
},
75+
{
76+
"type": "internal-link",
77+
"id": "ai_assistant",
78+
"label": "Creating an AI Assistant",
79+
"summary": "An assistant that temporarily remembers conversations and understands their meaning.",
80+
"args": {
81+
"path": "/vss/ai_assistant.md"
82+
}
83+
},
84+
{
85+
"type": "internal-link",
86+
"id": "vss-learn-more",
87+
"label": "Learn more",
88+
"args": {
89+
"path": "/vss/learn-more.md"
90+
}
91+
}
92+
]
93+
},
94+
{
95+
"type": "group",
96+
"id": "sq",
97+
"label": "How to query your data",
98+
"args": {
99+
"initialIsOpen": false
100+
},
101+
"children": [
102+
{
103+
"type": "internal-link",
104+
"id": "sq-intro",
105+
"label": "Introduction",
106+
"summary": "Try real-time searching and perform complex structured queries without compromising database performance.",
107+
"args": {
108+
"path": "/sq/intro.md"
109+
}
110+
},
111+
{
112+
"type": "internal-link",
113+
"id": "sq-exact-match",
114+
"label": "Exact match",
115+
"args": {
116+
"path": "/sq/exact-match.md"
117+
}
118+
},
119+
{
120+
"type": "internal-link",
121+
"id": "sq-full-text",
122+
"label": "Full-text search",
123+
"args": {
124+
"path": "/sq/full-text.md"
125+
}
126+
},
127+
{
128+
"type": "internal-link",
129+
"id": "sq-range",
130+
"label": "Range queries",
131+
"args": {
132+
"path": "/sq/range.md"
133+
}
134+
},
135+
{
136+
"type": "internal-link",
137+
"id": "sq-geospatial",
138+
"label": "Geospatial queries",
139+
"args": {
140+
"path": "/sq/geospatial.md"
141+
}
142+
},
143+
{
144+
"type": "internal-link",
145+
"id": "sq-combined",
146+
"label": "Combined queries",
147+
"args": {
148+
"path": "/sq/combined.md"
149+
}
150+
},
151+
{
152+
"type": "internal-link",
153+
"id": "sq-aggregations",
154+
"label": "Analytic and transformative queries",
155+
"args": {
156+
"path": "/sq/aggregations.md"
157+
}
158+
},
159+
{
160+
"type": "internal-link",
161+
"id": "sq-learn-more",
162+
"label": "Learn more",
163+
"args": {
164+
"path": "/sq/learn-more.md"
165+
}
166+
}
167+
]
168+
},
40169
{
41170
"type": "group",
42171
"id": "ds",
@@ -308,124 +437,6 @@
308437
]
309438
}
310439
]
311-
},
312-
{
313-
"type": "group",
314-
"id": "sq",
315-
"label": "How to query your data",
316-
"args": {
317-
"initialIsOpen": false
318-
},
319-
"children": [
320-
{
321-
"type": "internal-link",
322-
"id": "sq-intro",
323-
"label": "Introduction",
324-
"summary": "Try real-time searching and perform complex structured queries without compromising the database performance.",
325-
"args": {
326-
"path": "/sq/intro.md"
327-
}
328-
},
329-
{
330-
"type": "internal-link",
331-
"id": "sq-exact-match",
332-
"label": "Exact match",
333-
"args": {
334-
"path": "/sq/exact-match.md"
335-
}
336-
},
337-
{
338-
"type": "internal-link",
339-
"id": "sq-full-text",
340-
"label": "Full-text search",
341-
"args": {
342-
"path": "/sq/full-text.md"
343-
}
344-
},
345-
{
346-
"type": "internal-link",
347-
"id": "sq-range",
348-
"label": "Range queries",
349-
"args": {
350-
"path": "/sq/range.md"
351-
}
352-
},
353-
{
354-
"type": "internal-link",
355-
"id": "sq-geospatial",
356-
"label": "Geospatial queries",
357-
"args": {
358-
"path": "/sq/geospatial.md"
359-
}
360-
},
361-
{
362-
"type": "internal-link",
363-
"id": "sq-combined",
364-
"label": "Combined queries",
365-
"args": {
366-
"path": "/sq/combined.md"
367-
}
368-
},
369-
{
370-
"type": "internal-link",
371-
"id": "sq-aggregations",
372-
"label": "Analytic and transformative queries",
373-
"args": {
374-
"path": "/sq/aggregations.md"
375-
}
376-
},
377-
{
378-
"type": "internal-link",
379-
"id": "sq-learn-more",
380-
"label": "Learn more",
381-
"args": {
382-
"path": "/sq/learn-more.md"
383-
}
384-
}
385-
]
386-
},
387-
{
388-
"type": "group",
389-
"id": "vss",
390-
"label": "Vector search explained",
391-
"args": {
392-
"initialIsOpen": false
393-
},
394-
"children": [
395-
{
396-
"type": "internal-link",
397-
"id": "vss-intro",
398-
"label": "Introduction",
399-
"summary": "Understand how to use Redis as a vector database.",
400-
"args": {
401-
"path": "/vss/intro.md"
402-
}
403-
},
404-
{
405-
"type": "internal-link",
406-
"id": "vss-vectors-basic",
407-
"label": "Vector search (basic)",
408-
"args": {
409-
"path": "/vss/vectors-basic.md"
410-
}
411-
},
412-
{
413-
"type": "internal-link",
414-
"id": "vss-vectors-adv-hash",
415-
"label": "Vector search (advanced)",
416-
"args": {
417-
"path": "/vss/vectors-adv-hash.md"
418-
}
419-
},
420-
{
421-
"type": "internal-link",
422-
"id": "vss-learn-more",
423-
"label": "Learn more",
424-
"args": {
425-
"path": "/vss/learn-more.md"
426-
}
427-
}
428-
]
429440
}
430441
]
431442
}

src/sq/geospatial.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Redis Stack's geospatial feature allows you to query for data associated with geographic locations. You can either query for locations within a specific radius or based on geometric shapes, such as polygons. A polygon shape could, for instance, represent a lake or the layout of a building.
1+
Redis Query Engine's geospatial feature allows you to query for data associated with geographic locations. You can either query for locations within a specific radius or based on geometric shapes, such as polygons. A polygon shape could, for instance, represent a lake or the layout of a building.
22

33
The examples in this article use the following schema:
44

@@ -9,7 +9,7 @@ The examples in this article use the following schema:
99

1010

1111
**Note**:
12-
> Redis Stack version 7.2.0 or higher is required to use the `GEOSHAPE` field type.
12+
> We recommend using Redis 8 or higher to use the `GEOSHAPE` field type.
1313
1414
```redis:[run_confirmation=true] Create the bike shop idx:bicycle
1515
FT.CREATE

src/sq/intro.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Redis Stack offers an enhanced Redis experience via the following Redis Query Engine features:
1+
The Redis Query Engine offers an enhanced Redis experience using the following search and query features:
22

33
- A rich query language
44
- Incremental indexing on JSON and hash documents
@@ -7,7 +7,7 @@ Redis Stack offers an enhanced Redis experience via the following Redis Query En
77
- Geospatial queries
88
- Aggregations
99

10-
The Redis Query Engine features of Redis Stack allow you to use Redis as a:
10+
The Redis Query Engine features allow you to use Redis as a:
1111

1212
- Document database
1313
- Vector database
@@ -16,8 +16,8 @@ The Redis Query Engine features of Redis Stack allow you to use Redis as a:
1616

1717
### Prerequisites
1818

19-
[Redis Stack](https://redis.io/downloads/?utm_source=redisinsight&utm_medium=app&utm_campaign=query_engine_tutorial) >=7.4.0-v0 \
19+
[Redis 8](https://hub.docker.com/layers/library/redis/8.0.3/images/sha256-426e6823fb1778e8c49f327f9e5af00e505a7fca726ffe11b7930eb1d99ef5fd) or higher \
2020
OR \
2121
[Redis Query Engine](https://github.com/RediSearch/RediSearch/) >=2.10.5 \
2222
OR \
23-
A free Redis Stack instance on [Redis Cloud](https://redis.io/try-free/?utm_source=redisinsight&utm_medium=app&utm_campaign=query_engine_tutorial).
23+
A free Redis instance on [Redis Cloud](https://redis.io/try-free/?utm_source=redisinsight&utm_medium=app&utm_campaign=redis_query_engine_tutorial).

0 commit comments

Comments
 (0)