From c094f1a381c6c2e5d3188693768c10c3e5ba435b Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Wed, 10 Jul 2024 14:33:49 +0100 Subject: [PATCH 01/11] DOC-3967 minor surgery on folder structure --- content/commands/scan/index.md | 2 +- content/develop/concepts/_index.md | 22 ++++++ .../keyspace.md => concepts/keys-values.md} | 75 +++++++++++++++++-- content/develop/data-types/hashes.md | 2 +- content/develop/get-started/_index.md | 6 +- content/develop/get-started/data-store.md | 2 +- content/develop/quickstart/_index.md | 30 ++++++++ .../{get-started => quickstart}/faq.md | 1 + .../operate/oss_and_stack/management/admin.md | 2 +- 9 files changed, 129 insertions(+), 13 deletions(-) create mode 100644 content/develop/concepts/_index.md rename content/develop/{use/keyspace.md => concepts/keys-values.md} (65%) create mode 100644 content/develop/quickstart/_index.md rename content/develop/{get-started => quickstart}/faq.md (99%) diff --git a/content/commands/scan/index.md b/content/commands/scan/index.md index 1565c7ab4..215836c23 100644 --- a/content/commands/scan/index.md +++ b/content/commands/scan/index.md @@ -288,7 +288,7 @@ Also note that this behavior is specific of [`SSCAN`]({{< relref "/commands/ssca ## Further reading -For more information about managing keys, please refer to the [The Redis Keyspace]({{< relref "/develop/use/keyspace" >}}) tutorial. +For more information about managing keys, please refer to [Keys and values]({{< relref "/develop/concepts/keys-values" >}}). ## Additional examples diff --git a/content/develop/concepts/_index.md b/content/develop/concepts/_index.md new file mode 100644 index 000000000..0d327c205 --- /dev/null +++ b/content/develop/concepts/_index.md @@ -0,0 +1,22 @@ +--- +categories: +- docs +- develop +- stack +- oss +- rs +- rc +- oss +- kubernetes +- clients +description: Overview of the most important concepts in Redis +linkTitle: Understand Redis concepts +title: Understand Redis Concepts +hideListLinks: true +weight: 35 +--- + +This section introduces concepts that are fundamental to using Redis: + +- Keys and values +- Data types diff --git a/content/develop/use/keyspace.md b/content/develop/concepts/keys-values.md similarity index 65% rename from content/develop/use/keyspace.md rename to content/develop/concepts/keys-values.md index 9b691f229..faedfbe77 100644 --- a/content/develop/use/keyspace.md +++ b/content/develop/concepts/keys-values.md @@ -14,17 +14,36 @@ description: 'Managing keys in Redis: Key expiration, scanning, altering and que ' linkTitle: Keyspace -title: Keyspace +title: Keys and values weight: 1 +aliases: /develop/use/keyspace --- -Redis keys are binary safe; this means that you can use any binary sequence as a -key, from a string like "foo" to the content of a JPEG file. -The empty string is also a valid key. +Every data object that you store in a Redis database has its own unique +*key*. The key is a string that you pass to Redis commands to +retrieve the corresponding object or modify its data. The data object associated with a +particular key is known as the *value* and the two together are known as +as *key-value pair*. -A few other rules about keys: +## Content of keys -* Very long keys are not a good idea. For instance a key of 1024 bytes is a bad +A key is typically a textual name that has some meaning within your +data model. Unlike variable names in a programming language, Redis keys have few +restrictions on their format, so keys with whitespace or punctuation characters +are mostly fine (for example, "1st Attempt", or "% of price in $"). Redis doesn't +support namespaces or other categories for keys, so you must take care to avoid +name collisions. However, there is a convention for using the colon ":" +character to split keys into sections (for example, "person:1", "person:2", +"office:London", "office:NewYork:1"). You can use this as a simple way to collect +keys together into categories. + +Although keys are usually textual, Redis actually implements *binary-safe* keys, +so you can use any sequence of bytes as a valid key, such as a JPEG file or +a struct value from your app. The empty string is also a valid key in Redis. + +There are also a few other things to bear in mind about keys: + +* Very long keys are not a good idea. For instance, a key of 1024 bytes is a bad idea not only memory-wise, but also because the lookup of the key in the dataset may require several costly key-comparisons. Even when the task at hand is to match the existence of a large value, hashing it (for example @@ -40,6 +59,49 @@ A few other rules about keys: fields, as in "comment:4321:reply.to" or "comment:4321:reply-to". * The maximum allowed key size is 512 MB. +### Hashtags + +Redis uses [hashing](https://en.wikipedia.org/wiki/Hash_table) to retrieve the +value associated with a key in a highly efficient way. Hashing involves combining the +raw byte values from the key to produce an integer *index* number. The index is then +used to locate the *hash slot* where the value for the key is stored. + +Normally, the whole key is used to calculate the hash index, but there are some +situations where you need to hash only a part of the key. You can select the +section of the key you want to hash using a pair of curly braces `{...}` to create +a *hashtag*. For example, the keys `person:1` and `person:2` produce different +hash indices but `{person}:1` and `{person}:2` produce the same index because +only the `person` hashtag section in the braces is used for the hash calculation. + +A common use of hashtags is to allow +[multi-key operations]({{< relref "/operate/rs/databases/durability-ha/clustering" >}}) +with a *clustered* database (see +[Database clustering]({{< relref "/operate/rs/databases/durability-ha/clustering/#multikey-operations" >}}) +for more information). Redis doesn't allow most multi-key operations in a clustered database +unless all the keys produce the same hash index. For example, the +[SINTER]({{< relref "/commands/sinter" >}}) +command finds the [intersection](https://en.wikipedia.org/wiki/Intersection_(set_theory)) +of two different [set]({{< relref "content/develop/data-types/sets" >}}) values. +This means that the command + +```bash +SINTER group:1 group:2 +``` + +won't work with a clustered database but + +```bash +SINTER {group}:1 {group}:2 +``` + +will work because the hashtag ensures the two keys produce the same hash index. + +Note that although hashtags are useful in certain cases, you shouldn't make +a habit of using them generally. If you have too many keys mapped to the same +hash slot then this will eventually harm the performance of your database. +See [Database clustering]({{< relref "/operate/rs/databases/durability-ha/clustering" >}}) +for more information about how to use hashtags. + ## Altering and querying the key space There are commands that are not defined on particular types, but are useful @@ -120,6 +182,7 @@ the [`PTTL`]({{< relref "/commands/pttl" >}}) commands, and the full list of [`S ## Navigating the keyspace ### Scan + To incrementally iterate over the keys in a Redis database in an efficient manner, you can use the [`SCAN`]({{< relref "/commands/scan" >}}) command. Since [`SCAN`]({{< relref "/commands/scan" >}}) allows for incremental iteration, returning only a small number of elements per call, it can be used in production without the downside of commands like [`KEYS`]({{< relref "/commands/keys" >}}) or [`SMEMBERS`]({{< relref "/commands/smembers" >}}) that may block the server for a long time (even several seconds) when called against big collections of keys or elements. diff --git a/content/develop/data-types/hashes.md b/content/develop/data-types/hashes.md index 33780527f..9939b67de 100644 --- a/content/develop/data-types/hashes.md +++ b/content/develop/data-types/hashes.md @@ -101,7 +101,7 @@ See the [complete list of hash commands]({{< relref "/commands/" >}}?group=hash) ## Field expiration New in Redis Community Edition 7.4 is the ability to specify an expiration time or a time-to-live (TTL) value for individual hash fields. -This capability is comparable to [key expiration]({{< baseurl "/develop/use/keyspace" >}}#key-expiration") and includes a number of similar commands. +This capability is comparable to [key expiration]({{< relref "/develop/concepts/keys-values#key-expiration" >}}") and includes a number of similar commands. Use the following commands to set either an exact expiration time or a TTL value for specific fields: diff --git a/content/develop/get-started/_index.md b/content/develop/get-started/_index.md index c2d1189a2..9548ea3ef 100644 --- a/content/develop/get-started/_index.md +++ b/content/develop/get-started/_index.md @@ -13,8 +13,8 @@ description: 'Redis quick start guides ' hideListLinks: true -linkTitle: Quick starts -title: Quick starts +linkTitle: Quick start tutorials +title: Quick start tutorials weight: 20 --- @@ -26,4 +26,4 @@ Redis can be used as a database, cache, streaming engine, message broker, and mo Please select the guide that aligns best with your specific usage scenario. -You can find answers to frequently asked questions in the [FAQ]({{< relref "/develop/get-started/faq" >}}). +You can find answers to frequently asked questions in the [FAQ]({{< relref "/develop/quickstart/faq" >}}). diff --git a/content/develop/get-started/data-store.md b/content/develop/get-started/data-store.md index 2315809cc..735d66aae 100644 --- a/content/develop/get-started/data-store.md +++ b/content/develop/get-started/data-store.md @@ -82,7 +82,7 @@ You can get a complete overview of available data types in this documentation si ## Scan the keyspace -Each item within Redis has a unique key. All items live within the Redis [keyspace]({{< relref "/develop/use/keyspace" >}}). You can scan the Redis keyspace via the [SCAN command]({{< relref "/commands/scan" >}}). Here is an example that scans for the first 100 keys that have the prefix `bike:`: +Each item within Redis has a unique key. All items live within the Redis [keyspace]({{< relref "/develop/concepts/keys-values" >}}). You can scan the Redis keyspace via the [SCAN command]({{< relref "/commands/scan" >}}). Here is an example that scans for the first 100 keys that have the prefix `bike:`: ``` SCAN 0 MATCH "bike:*" COUNT 100 diff --git a/content/develop/quickstart/_index.md b/content/develop/quickstart/_index.md new file mode 100644 index 000000000..80c917cbe --- /dev/null +++ b/content/develop/quickstart/_index.md @@ -0,0 +1,30 @@ +--- +categories: +- docs +- develop +- stack +- oss +- rs +- rc +- oss +- kubernetes +- clients +description: Get started quickly with Redis +linkTitle: Get started +title: Get started +hideListLinks: true +weight: 35 +--- + +Use the pages in this section to start working with Redis right away. + +The Quickstart tutorials provide a good way to see how Redis can +handle some common use cases: + +- As a [data store]({{< relref "/develop/get-started/data-store" >}}) +- As a [document database]({{< relref "/develop/get-started/document-database" >}}) +- As a [vector database]({{< relref "/develop/get-started/vector-database" >}}) +- For [Retrieval Augmented Generation (RAG)]({{< relref "/develop/get-started/rag" >}}) + +There is also an [FAQ]({{< relref "/develop/quickstart/faq" >}}) that answers +some of the most common questions users ask about Redis. diff --git a/content/develop/get-started/faq.md b/content/develop/quickstart/faq.md similarity index 99% rename from content/develop/get-started/faq.md rename to content/develop/quickstart/faq.md index fa4e7a7f8..6f1f3899c 100644 --- a/content/develop/get-started/faq.md +++ b/content/develop/quickstart/faq.md @@ -14,6 +14,7 @@ description: 'Commonly asked questions when getting started with Redis ' linkTitle: FAQ title: Redis FAQ +aliases: /develop/get-started/faq weight: 100 --- ## How is Redis different from other key-value stores? diff --git a/content/operate/oss_and_stack/management/admin.md b/content/operate/oss_and_stack/management/admin.md index 8e69ada26..c4a395eaa 100644 --- a/content/operate/oss_and_stack/management/admin.md +++ b/content/operate/oss_and_stack/management/admin.md @@ -16,7 +16,7 @@ weight: 1 * Deploy Redis using the Linux operating system. Redis is also tested on OS X, and from time to time on FreeBSD and OpenBSD systems. However, Linux is where most of the stress testing is performed, and where most production deployments are run. -* Set the Linux kernel overcommit memory setting to 1. Add `vm.overcommit_memory = 1` to `/etc/sysctl.conf`. Then, reboot or run the command `sysctl vm.overcommit_memory=1` to activate the setting. See [FAQ: Background saving fails with a fork() error on Linux?]({{< baseurl >}}/develop/get-started/faq/#background-saving-fails-with-a-fork-error-on-linux) for details. +* Set the Linux kernel overcommit memory setting to 1. Add `vm.overcommit_memory = 1` to `/etc/sysctl.conf`. Then, reboot or run the command `sysctl vm.overcommit_memory=1` to activate the setting. See [FAQ: Background saving fails with a fork() error on Linux?]({{< baseurl >}}/develop/quickstart/faq/#background-saving-fails-with-a-fork-error-on-linux) for details. * To ensure the Linux kernel feature Transparent Huge Pages does not impact Redis memory usage and latency, run the command: `echo never > /sys/kernel/mm/transparent_hugepage/enabled` to disable it. See [Latency Diagnosis - Latency induced by transparent huge pages]({{< baseurl >}}/operate/oss_and_stack/management/optimization/latency#latency-induced-by-transparent-huge-pages) for additional context. From cbb0e28dd6a538a089da2201d9f517c733cac7d7 Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Wed, 10 Jul 2024 16:45:49 +0100 Subject: [PATCH 02/11] DOC-3967 added nav.json plus minor fixes --- content/develop/concepts/keys-values.md | 6 +- data/nav.json | 772 ++++++++++++++++++++++++ 2 files changed, 775 insertions(+), 3 deletions(-) create mode 100644 data/nav.json diff --git a/content/develop/concepts/keys-values.md b/content/develop/concepts/keys-values.md index faedfbe77..29d8fe494 100644 --- a/content/develop/concepts/keys-values.md +++ b/content/develop/concepts/keys-values.md @@ -76,12 +76,12 @@ only the `person` hashtag section in the braces is used for the hash calculation A common use of hashtags is to allow [multi-key operations]({{< relref "/operate/rs/databases/durability-ha/clustering" >}}) with a *clustered* database (see -[Database clustering]({{< relref "/operate/rs/databases/durability-ha/clustering/#multikey-operations" >}}) +[Database clustering]({{< relref "/operate/rs/databases/durability-ha/clustering#multikey-operations" >}}) for more information). Redis doesn't allow most multi-key operations in a clustered database unless all the keys produce the same hash index. For example, the [SINTER]({{< relref "/commands/sinter" >}}) command finds the [intersection](https://en.wikipedia.org/wiki/Intersection_(set_theory)) -of two different [set]({{< relref "content/develop/data-types/sets" >}}) values. +of two different [set]({{< relref "/develop/data-types/sets" >}}) values. This means that the command ```bash @@ -202,7 +202,7 @@ This command is intended for debugging and special operations, such as changing your keyspace layout. Don't use [`KEYS`]({{< relref "/commands/keys" >}}) in your regular application code. If you're looking for a way to find keys in a subset of your keyspace, consider -using [`SCAN`]({{< relref "/commands/scan" >}}) or [sets][tdts]. +using [`SCAN`]({{< relref "/commands/scan" >}}) or [sets][{{< relref "/develop/data-types/sets" >}}]. [tdts]: /develop/data-types#sets diff --git a/data/nav.json b/data/nav.json new file mode 100644 index 000000000..dc6953615 --- /dev/null +++ b/data/nav.json @@ -0,0 +1,772 @@ +{ + "relref": "develop/", + "linkTitle": "Develop", + "children": [ + { + "relref": "develop/get-started", + "linkTitle": "Quick start tutorials", + "children": [ + { + "relref": "develop/get-started/data-store", + "linkTitle": "Data structure store" + }, + { + "relref": "develop/get-started/document-database", + "linkTitle": "Document database" + }, + { + "relref": "develop/get-started/vector-database", + "linkTitle": "Vector database" + }, + { + "relref": "develop/get-started/rag", + "linkTitle": "RAG with Redis" + }, + { + "relref": "develop/get-started/img", + "linkTitle": "" + } + ] + }, + { + "relref": "develop/data-types", + "linkTitle": "Understand data types", + "children": [ + { + "relref": "develop/data-types/strings", + "linkTitle": "Strings" + }, + { + "relref": "develop/data-types/json", + "linkTitle": "JSON", + "children": [ + { + "relref": "develop/data-types/json/indexing_JSON", + "linkTitle": "Index/Search" + }, + { + "relref": "develop/data-types/json/path", + "linkTitle": "Path" + }, + { + "relref": "develop/data-types/json/use_cases", + "linkTitle": "Use cases" + }, + { + "relref": "develop/data-types/json/performance", + "linkTitle": "Performance" + }, + { + "relref": "develop/data-types/json/ram", + "linkTitle": "Memory Usage" + }, + { + "relref": "develop/data-types/json/resp3", + "linkTitle": "RESP3 migration guide" + }, + { + "relref": "develop/data-types/json/developer", + "linkTitle": "Developer notes" + } + ] + }, + { + "relref": "develop/data-types/lists", + "linkTitle": "Lists" + }, + { + "relref": "develop/data-types/sets", + "linkTitle": "Sets" + }, + { + "relref": "develop/data-types/hashes", + "linkTitle": "Hashes" + }, + { + "relref": "develop/data-types/sorted-sets", + "linkTitle": "Sorted sets" + }, + { + "relref": "develop/data-types/streams", + "linkTitle": "Streams" + }, + { + "relref": "develop/data-types/geospatial", + "linkTitle": "Geospatial" + }, + { + "relref": "develop/data-types/bitmaps", + "linkTitle": "Bitmaps" + }, + { + "relref": "develop/data-types/bitfields", + "linkTitle": "Bitfields" + }, + { + "relref": "develop/data-types/probabilistic", + "linkTitle": "Probabilistic", + "children": [ + { + "relref": "develop/data-types/probabilistic/hyperloglogs", + "linkTitle": "HyperLogLog" + }, + { + "relref": "develop/data-types/probabilistic/bloom-filter", + "linkTitle": "Bloom filter" + }, + { + "relref": "develop/data-types/probabilistic/cuckoo-filter", + "linkTitle": "Cuckoo filter" + }, + { + "relref": "develop/data-types/probabilistic/t-digest", + "linkTitle": "t-digest" + }, + { + "relref": "develop/data-types/probabilistic/top-k", + "linkTitle": "Top-K" + }, + { + "relref": "develop/data-types/probabilistic/count-min-sketch", + "linkTitle": "Count-min sketch" + }, + { + "relref": "develop/data-types/probabilistic/Configuration", + "linkTitle": "Configuration" + } + ] + }, + { + "relref": "develop/data-types/timeseries", + "linkTitle": "Time series", + "children": [ + { + "relref": "develop/data-types/timeseries/quickstart", + "linkTitle": "Quickstart" + }, + { + "relref": "develop/data-types/timeseries/configuration", + "linkTitle": "Configuration" + }, + { + "relref": "develop/data-types/timeseries/development", + "linkTitle": "Development" + }, + { + "relref": "develop/data-types/timeseries/clients", + "linkTitle": "Clients" + }, + { + "relref": "develop/data-types/timeseries/use_cases", + "linkTitle": "Use cases" + }, + { + "relref": "develop/data-types/timeseries/reference", + "linkTitle": "Reference", + "children": [ + { + "relref": "develop/data-types/timeseries/reference/out-of-order_performance_considerations", + "linkTitle": "Out-of-order / backfilled ingestion performance considerations" + } + ] + } + ] + } + ] + }, + { + "relref": "develop/quickstart", + "linkTitle": "Get started", + "children": [ + { + "relref": "develop/quickstart/faq", + "linkTitle": "FAQ" + } + ] + }, + { + "relref": "develop/concepts", + "linkTitle": "Understand Redis concepts", + "children": [ + { + "relref": "develop/concepts/keys-values", + "linkTitle": "Keyspace" + } + ] + }, + { + "relref": "develop/connect", + "linkTitle": "Connect", + "children": [ + { + "relref": "develop/connect/cli", + "linkTitle": "CLI" + }, + { + "relref": "develop/connect/insight", + "linkTitle": "Redis Insight", + "children": [ + { + "relref": "develop/connect/insight/copilot-faq", + "linkTitle": "Redis Copilot FAQ" + }, + { + "relref": "develop/connect/insight/release-notes", + "linkTitle": "Release notes", + "children": [ + { + "relref": "develop/connect/insight/release-notes/v.2.40.0", + "linkTitle": "v2.40.0 (December 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.20.0", + "linkTitle": "v2.20.0 (Feb 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.36.0", + "linkTitle": "v2.36.0 (October 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.50.0", + "linkTitle": "v2.50.0 (May 2024)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.46.0", + "linkTitle": "v2.46.0 (March 2024)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.26.0", + "linkTitle": "v2.26.0 (May 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.30.0", + "linkTitle": "v2.30.0 (July 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.44.0", + "linkTitle": "v2.44.0 (February 2024)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.52.0", + "linkTitle": "v2.52.0 (June 2024)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.48.0", + "linkTitle": "v2.48.0 (April 2024)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.32.0", + "linkTitle": "v2.32.0 (August 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.24.0", + "linkTitle": "v2.24.0 (Apr 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v2.28.0", + "linkTitle": "v2.28.0 (June 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.22.1", + "linkTitle": "v2.22.1 (Mar 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.42.0", + "linkTitle": "v2.42.0 (January 2024)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.38.0", + "linkTitle": "v2.38.0 (November 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.18.0", + "linkTitle": "v2.18.0 (Jan 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.34.0", + "linkTitle": "v2.34.0 (September 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.16.0", + "linkTitle": "v2.16.0 (Dec 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.14.0", + "linkTitle": "v2.14.0 (Nov 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v2.12.0", + "linkTitle": "v2.12.0 (Oct 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v2.10.0", + "linkTitle": "v2.10.0 (Sept 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.14.0", + "linkTitle": "v1.14 (May 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v2.8.0", + "linkTitle": "v2.8.0 (Aug 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.13.0", + "linkTitle": "v1.13 (Aug 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.6.0", + "linkTitle": "v2.6.0 (July 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.4.0", + "linkTitle": "v2.4.0 (June 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v2.2.0", + "linkTitle": "v2.2.0 (May 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.12.0", + "linkTitle": "v1.12 (May 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v2.0", + "linkTitle": "v2.0 (Nov 2021)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.11.0", + "linkTitle": "v1.11 (Oct 2021)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.10.0", + "linkTitle": "v1.10 (Mar 2021)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.9.0", + "linkTitle": "v1.9 (Jan 2021)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.8.0", + "linkTitle": "v1.8 (Nov 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.7.0", + "linkTitle": "v1.7 (Sep 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.6.0", + "linkTitle": "v1.6 (June 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.5.0", + "linkTitle": "v1.5 (May 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.4.0", + "linkTitle": "v1.4 (Apr 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.3.0", + "linkTitle": "v1.3 (Mar 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.2.0", + "linkTitle": "v1.2 (Jan 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.1.0", + "linkTitle": "v1.1 (Dec 2019)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.0.0", + "linkTitle": "v1.0 (Nov 2019)" + } + ] + }, + { + "relref": "develop/connect/insight/tutorials", + "linkTitle": "", + "children": [ + { + "relref": "develop/connect/insight/tutorials/insight-stream-consumer", + "linkTitle": "Streams" + } + ] + } + ] + }, + { + "relref": "develop/connect/clients", + "linkTitle": "Clients", + "children": [ + { + "relref": "develop/connect/clients/python", + "linkTitle": "Python" + }, + { + "relref": "develop/connect/clients/dotnet", + "linkTitle": "C#/.NET" + }, + { + "relref": "develop/connect/clients/nodejs", + "linkTitle": "Node.js" + }, + { + "relref": "develop/connect/clients/java", + "linkTitle": "Java", + "children": [ + { + "relref": "develop/connect/clients/java/jedis", + "linkTitle": "Jedis" + }, + { + "relref": "develop/connect/clients/java/lettuce", + "linkTitle": "Lettuce" + } + ] + }, + { + "relref": "develop/connect/clients/go", + "linkTitle": "Go" + }, + { + "relref": "develop/connect/clients/om-clients", + "linkTitle": "Object mapping" + }, + { + "relref": "develop/connect/clients/comm-supp-clients", + "linkTitle": "Community-supported clients" + } + ] + } + ] + }, + { + "relref": "develop/interact", + "linkTitle": "Interact with data", + "children": [ + { + "relref": "develop/interact/search-and-query", + "linkTitle": "Search and query", + "children": [ + { + "relref": "develop/interact/search-and-query/basic-constructs", + "linkTitle": "Basic constructs", + "children": [ + { + "relref": "develop/interact/search-and-query/basic-constructs/schema-definition", + "linkTitle": "Schema definition" + }, + { + "relref": "develop/interact/search-and-query/basic-constructs/field-and-type-options", + "linkTitle": "Field and type options" + }, + { + "relref": "develop/interact/search-and-query/basic-constructs/configuration-parameters", + "linkTitle": "Configuration parameters" + } + ] + }, + { + "relref": "develop/interact/search-and-query/indexing", + "linkTitle": "Indexing" + }, + { + "relref": "develop/interact/search-and-query/query-use-cases", + "linkTitle": "Use cases" + }, + { + "relref": "develop/interact/search-and-query/query", + "linkTitle": "Query", + "children": [ + { + "relref": "develop/interact/search-and-query/query/exact-match", + "linkTitle": "Exact match" + }, + { + "relref": "develop/interact/search-and-query/query/range", + "linkTitle": "Range" + }, + { + "relref": "develop/interact/search-and-query/query/full-text", + "linkTitle": "Full-text" + }, + { + "relref": "develop/interact/search-and-query/query/geo-spatial", + "linkTitle": "Geospatial" + }, + { + "relref": "develop/interact/search-and-query/query/vector-search", + "linkTitle": "Vector" + }, + { + "relref": "develop/interact/search-and-query/query/combined", + "linkTitle": "Combined" + }, + { + "relref": "develop/interact/search-and-query/query/aggregation", + "linkTitle": "Aggregation" + } + ] + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts", + "linkTitle": "Advanced concepts", + "children": [ + { + "relref": "develop/interact/search-and-query/advanced-concepts/aggregations", + "linkTitle": "Aggregations" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/stopwords", + "linkTitle": "Stop words" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/escaping", + "linkTitle": "Tokenization" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/dialects", + "linkTitle": "Query dialects" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/query_syntax", + "linkTitle": "Query syntax" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/sorting", + "linkTitle": "Sorting" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/tags", + "linkTitle": "Tags" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/highlight", + "linkTitle": "Highlighting" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/scoring", + "linkTitle": "Scoring" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/stemming", + "linkTitle": "Stemming" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/synonyms", + "linkTitle": "Synonym" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/spellcheck", + "linkTitle": "Spellchecking" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/phonetic_matching", + "linkTitle": "Phonetic" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/vectors", + "linkTitle": "Vectors" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/chinese", + "linkTitle": "Chinese" + } + ] + }, + { + "relref": "develop/interact/search-and-query/administration", + "linkTitle": "Administration", + "children": [ + { + "relref": "develop/interact/search-and-query/administration/overview", + "linkTitle": "Technical overview" + }, + { + "relref": "develop/interact/search-and-query/administration/design", + "linkTitle": "Internal design" + }, + { + "relref": "develop/interact/search-and-query/administration/gc", + "linkTitle": "Garbage collection" + }, + { + "relref": "develop/interact/search-and-query/administration/extensions", + "linkTitle": "Extensions" + }, + { + "relref": "develop/interact/search-and-query/administration/indexing", + "linkTitle": "Indexing" + } + ] + }, + { + "relref": "develop/interact/search-and-query/deprecated", + "linkTitle": "Deprecated", + "children": [ + { + "relref": "develop/interact/search-and-query/deprecated/development", + "linkTitle": "Developer notes" + }, + { + "relref": "develop/interact/search-and-query/deprecated/payloads", + "linkTitle": "Payload" + } + ] + }, + { + "relref": "develop/interact/search-and-query/img", + "linkTitle": "" + } + ] + }, + { + "relref": "develop/interact/programmability", + "linkTitle": "Programmability", + "children": [ + { + "relref": "develop/interact/programmability/functions-intro", + "linkTitle": "Functions" + }, + { + "relref": "develop/interact/programmability/eval-intro", + "linkTitle": "Lua scripting" + }, + { + "relref": "develop/interact/programmability/lua-api", + "linkTitle": "Lua API" + }, + { + "relref": "develop/interact/programmability/lua-debugging", + "linkTitle": "Debugging Lua" + } + ] + }, + { + "relref": "develop/interact/transactions", + "linkTitle": "Transactions" + }, + { + "relref": "develop/interact/pubsub", + "linkTitle": "Pub/sub" + } + ] + }, + { + "relref": "develop/use", + "linkTitle": "Use Redis", + "children": [ + { + "relref": "develop/use/client-side-caching", + "linkTitle": "Client-side caching" + }, + { + "relref": "develop/use/keyspace-notifications", + "linkTitle": "Keyspace notifications" + }, + { + "relref": "develop/use/patterns", + "linkTitle": "Patterns", + "children": [ + { + "relref": "develop/use/patterns/distributed-locks", + "linkTitle": "Distributed locks" + }, + { + "relref": "develop/use/patterns/bulk-loading", + "linkTitle": "Bulk loading" + }, + { + "relref": "develop/use/patterns/twitter-clone", + "linkTitle": "Patterns example" + }, + { + "relref": "develop/use/patterns/indexes", + "linkTitle": "", + "children": [ + { + "relref": "develop/use/patterns/indexes/index", + "linkTitle": "Secondary indexing" + } + ] + } + ] + }, + { + "relref": "develop/use/pipelining", + "linkTitle": "", + "children": [ + { + "relref": "develop/use/pipelining/index", + "linkTitle": "Pipelining" + } + ] + } + ] + }, + { + "relref": "develop/reference", + "linkTitle": "Reference", + "children": [ + { + "relref": "develop/reference/command-tips", + "linkTitle": "Command tips" + }, + { + "relref": "develop/reference/sentinel-clients", + "linkTitle": "Sentinel clients" + }, + { + "relref": "develop/reference/modules", + "linkTitle": "Modules API", + "children": [ + { + "relref": "develop/reference/modules/modules-api-ref", + "linkTitle": "API reference" + }, + { + "relref": "develop/reference/modules/modules-native-types", + "linkTitle": "Native types API" + }, + { + "relref": "develop/reference/modules/modules-blocking-ops", + "linkTitle": "Blocking commands" + } + ] + }, + { + "relref": "develop/reference/key-specs", + "linkTitle": "Command key specifications" + }, + { + "relref": "develop/reference/protocol-spec", + "linkTitle": "Protocol spec" + }, + { + "relref": "develop/reference/clients", + "linkTitle": "Client handling" + }, + { + "relref": "develop/reference/command-arguments", + "linkTitle": "Command arguments" + }, + { + "relref": "develop/reference/gopher", + "linkTitle": "Gopher protocol" + }, + { + "relref": "develop/reference/eviction", + "linkTitle": "", + "children": [ + { + "relref": "develop/reference/eviction/index", + "linkTitle": "Eviction" + } + ] + } + ] + } + ] +} \ No newline at end of file From aaf715b01678512d3ce42a6a446be1924b971e4d Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Thu, 11 Jul 2024 12:13:42 +0100 Subject: [PATCH 03/11] DOC-3967 sidebar ordering and other fixes --- content/develop/concepts/keys-values.md | 2 +- data/nav.json | 954 ++++++++++++------------ layouts/partials/docs-nav.html | 95 ++- 3 files changed, 551 insertions(+), 500 deletions(-) diff --git a/content/develop/concepts/keys-values.md b/content/develop/concepts/keys-values.md index 29d8fe494..a667c9a70 100644 --- a/content/develop/concepts/keys-values.md +++ b/content/develop/concepts/keys-values.md @@ -13,7 +13,7 @@ description: 'Managing keys in Redis: Key expiration, scanning, altering and que the key space ' -linkTitle: Keyspace +linkTitle: Keys and values title: Keys and values weight: 1 aliases: /develop/use/keyspace diff --git a/data/nav.json b/data/nav.json index dc6953615..961e89c7c 100644 --- a/data/nav.json +++ b/data/nav.json @@ -2,6 +2,11 @@ "relref": "develop/", "linkTitle": "Develop", "children": [ + { + "relref": "develop/quickstart", + "linkTitle": "Get started", + "divider": "true" + }, { "relref": "develop/get-started", "linkTitle": "Quick start tutorials", @@ -21,13 +26,259 @@ { "relref": "develop/get-started/rag", "linkTitle": "RAG with Redis" + } + ] + }, + { + "relref": "develop/quickstart/faq", + "linkTitle": "FAQ" + }, + { + "relref": "develop/connect", + "linkTitle": "Connect to Redis", + "divider":"true" + }, + { + "relref": "develop/connect/cli", + "linkTitle": "CLI" + }, + { + "relref": "develop/connect/insight", + "linkTitle": "Redis Insight", + "children": [ + { + "relref": "develop/connect/insight/copilot-faq", + "linkTitle": "Redis Copilot FAQ" }, { - "relref": "develop/get-started/img", - "linkTitle": "" + "relref": "develop/connect/insight/tutorials/insight-stream-consumer", + "linkTitle": "Stream tutorial" + }, + { + "relref": "develop/connect/insight/release-notes", + "linkTitle": "Release notes", + "children": [ + { + "relref": "develop/connect/insight/release-notes/v.2.52.0", + "linkTitle": "v2.52.0 (June 2024)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.50.0", + "linkTitle": "v2.50.0 (May 2024)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.48.0", + "linkTitle": "v2.48.0 (April 2024)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.46.0", + "linkTitle": "v2.46.0 (March 2024)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.44.0", + "linkTitle": "v2.44.0 (February 2024)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.40.0", + "linkTitle": "v2.40.0 (December 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.36.0", + "linkTitle": "v2.36.0 (October 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.30.0", + "linkTitle": "v2.30.0 (July 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.26.0", + "linkTitle": "v2.26.0 (May 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.20.0", + "linkTitle": "v2.20.0 (Feb 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.32.0", + "linkTitle": "v2.32.0 (August 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.24.0", + "linkTitle": "v2.24.0 (Apr 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v2.28.0", + "linkTitle": "v2.28.0 (June 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.22.1", + "linkTitle": "v2.22.1 (Mar 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.42.0", + "linkTitle": "v2.42.0 (January 2024)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.38.0", + "linkTitle": "v2.38.0 (November 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.18.0", + "linkTitle": "v2.18.0 (Jan 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.34.0", + "linkTitle": "v2.34.0 (September 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.16.0", + "linkTitle": "v2.16.0 (Dec 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.14.0", + "linkTitle": "v2.14.0 (Nov 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v2.12.0", + "linkTitle": "v2.12.0 (Oct 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v2.10.0", + "linkTitle": "v2.10.0 (Sept 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.14.0", + "linkTitle": "v1.14 (May 2023)" + }, + { + "relref": "develop/connect/insight/release-notes/v2.8.0", + "linkTitle": "v2.8.0 (Aug 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.13.0", + "linkTitle": "v1.13 (Aug 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.6.0", + "linkTitle": "v2.6.0 (July 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v.2.4.0", + "linkTitle": "v2.4.0 (June 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v2.2.0", + "linkTitle": "v2.2.0 (May 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.12.0", + "linkTitle": "v1.12 (May 2022)" + }, + { + "relref": "develop/connect/insight/release-notes/v2.0", + "linkTitle": "v2.0 (Nov 2021)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.11.0", + "linkTitle": "v1.11 (Oct 2021)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.10.0", + "linkTitle": "v1.10 (Mar 2021)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.9.0", + "linkTitle": "v1.9 (Jan 2021)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.8.0", + "linkTitle": "v1.8 (Nov 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.7.0", + "linkTitle": "v1.7 (Sep 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.6.0", + "linkTitle": "v1.6 (June 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.5.0", + "linkTitle": "v1.5 (May 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.4.0", + "linkTitle": "v1.4 (Apr 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.3.0", + "linkTitle": "v1.3 (Mar 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.2.0", + "linkTitle": "v1.2 (Jan 2020)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.1.0", + "linkTitle": "v1.1 (Dec 2019)" + }, + { + "relref": "develop/connect/insight/release-notes/v1.0.0", + "linkTitle": "v1.0 (Nov 2019)" + } + ] + } + ] + }, + { + "relref": "develop/connect/clients", + "linkTitle": "Clients", + "children": [ + { + "relref": "develop/connect/clients/python", + "linkTitle": "Python" + }, + { + "relref": "develop/connect/clients/dotnet", + "linkTitle": "C#/.NET" + }, + { + "relref": "develop/connect/clients/nodejs", + "linkTitle": "Node.js" + }, + { + "relref": "develop/connect/clients/java", + "linkTitle": "Java", + "children": [ + { + "relref": "develop/connect/clients/java/jedis", + "linkTitle": "Jedis" + }, + { + "relref": "develop/connect/clients/java/lettuce", + "linkTitle": "Lettuce" + } + ] + }, + { + "relref": "develop/connect/clients/go", + "linkTitle": "Go" + }, + { + "relref": "develop/connect/clients/om-clients", + "linkTitle": "Object mapping" } ] }, + { + "relref": "develop/concepts", + "linkTitle": "Understand Redis concepts", + "divider": "true" + }, + { + "relref": "develop/concepts/keys-values", + "linkTitle": "Keys and values" + }, { "relref": "develop/data-types", "linkTitle": "Understand data types", @@ -175,598 +426,311 @@ ] }, { - "relref": "develop/quickstart", - "linkTitle": "Get started", - "children": [ - { - "relref": "develop/quickstart/faq", - "linkTitle": "FAQ" - } - ] - }, - { - "relref": "develop/concepts", - "linkTitle": "Understand Redis concepts", - "children": [ - { - "relref": "develop/concepts/keys-values", - "linkTitle": "Keyspace" - } - ] + "relref": "develop/interact", + "linkTitle": "Interact with data", + "divider":"true" }, { - "relref": "develop/connect", - "linkTitle": "Connect", + "relref": "develop/interact/search-and-query", + "linkTitle": "Search and query", "children": [ { - "relref": "develop/connect/cli", - "linkTitle": "CLI" - }, - { - "relref": "develop/connect/insight", - "linkTitle": "Redis Insight", + "relref": "develop/interact/search-and-query/basic-constructs", + "linkTitle": "Basic constructs", "children": [ { - "relref": "develop/connect/insight/copilot-faq", - "linkTitle": "Redis Copilot FAQ" + "relref": "develop/interact/search-and-query/basic-constructs/schema-definition", + "linkTitle": "Schema definition" }, { - "relref": "develop/connect/insight/release-notes", - "linkTitle": "Release notes", - "children": [ - { - "relref": "develop/connect/insight/release-notes/v.2.40.0", - "linkTitle": "v2.40.0 (December 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.20.0", - "linkTitle": "v2.20.0 (Feb 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.36.0", - "linkTitle": "v2.36.0 (October 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.50.0", - "linkTitle": "v2.50.0 (May 2024)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.46.0", - "linkTitle": "v2.46.0 (March 2024)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.26.0", - "linkTitle": "v2.26.0 (May 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.30.0", - "linkTitle": "v2.30.0 (July 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.44.0", - "linkTitle": "v2.44.0 (February 2024)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.52.0", - "linkTitle": "v2.52.0 (June 2024)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.48.0", - "linkTitle": "v2.48.0 (April 2024)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.32.0", - "linkTitle": "v2.32.0 (August 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.24.0", - "linkTitle": "v2.24.0 (Apr 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v2.28.0", - "linkTitle": "v2.28.0 (June 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.22.1", - "linkTitle": "v2.22.1 (Mar 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.42.0", - "linkTitle": "v2.42.0 (January 2024)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.38.0", - "linkTitle": "v2.38.0 (November 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.18.0", - "linkTitle": "v2.18.0 (Jan 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.34.0", - "linkTitle": "v2.34.0 (September 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.16.0", - "linkTitle": "v2.16.0 (Dec 2022)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.14.0", - "linkTitle": "v2.14.0 (Nov 2022)" - }, - { - "relref": "develop/connect/insight/release-notes/v2.12.0", - "linkTitle": "v2.12.0 (Oct 2022)" - }, - { - "relref": "develop/connect/insight/release-notes/v2.10.0", - "linkTitle": "v2.10.0 (Sept 2022)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.14.0", - "linkTitle": "v1.14 (May 2023)" - }, - { - "relref": "develop/connect/insight/release-notes/v2.8.0", - "linkTitle": "v2.8.0 (Aug 2022)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.13.0", - "linkTitle": "v1.13 (Aug 2022)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.6.0", - "linkTitle": "v2.6.0 (July 2022)" - }, - { - "relref": "develop/connect/insight/release-notes/v.2.4.0", - "linkTitle": "v2.4.0 (June 2022)" - }, - { - "relref": "develop/connect/insight/release-notes/v2.2.0", - "linkTitle": "v2.2.0 (May 2022)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.12.0", - "linkTitle": "v1.12 (May 2022)" - }, - { - "relref": "develop/connect/insight/release-notes/v2.0", - "linkTitle": "v2.0 (Nov 2021)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.11.0", - "linkTitle": "v1.11 (Oct 2021)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.10.0", - "linkTitle": "v1.10 (Mar 2021)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.9.0", - "linkTitle": "v1.9 (Jan 2021)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.8.0", - "linkTitle": "v1.8 (Nov 2020)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.7.0", - "linkTitle": "v1.7 (Sep 2020)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.6.0", - "linkTitle": "v1.6 (June 2020)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.5.0", - "linkTitle": "v1.5 (May 2020)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.4.0", - "linkTitle": "v1.4 (Apr 2020)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.3.0", - "linkTitle": "v1.3 (Mar 2020)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.2.0", - "linkTitle": "v1.2 (Jan 2020)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.1.0", - "linkTitle": "v1.1 (Dec 2019)" - }, - { - "relref": "develop/connect/insight/release-notes/v1.0.0", - "linkTitle": "v1.0 (Nov 2019)" - } - ] + "relref": "develop/interact/search-and-query/basic-constructs/field-and-type-options", + "linkTitle": "Field and type options" }, { - "relref": "develop/connect/insight/tutorials", - "linkTitle": "", - "children": [ - { - "relref": "develop/connect/insight/tutorials/insight-stream-consumer", - "linkTitle": "Streams" - } - ] + "relref": "develop/interact/search-and-query/basic-constructs/configuration-parameters", + "linkTitle": "Configuration parameters" } ] }, { - "relref": "develop/connect/clients", - "linkTitle": "Clients", + "relref": "develop/interact/search-and-query/indexing", + "linkTitle": "Indexing" + }, + { + "relref": "develop/interact/search-and-query/query-use-cases", + "linkTitle": "Use cases" + }, + { + "relref": "develop/interact/search-and-query/query", + "linkTitle": "Query", "children": [ { - "relref": "develop/connect/clients/python", - "linkTitle": "Python" + "relref": "develop/interact/search-and-query/query/exact-match", + "linkTitle": "Exact match" }, { - "relref": "develop/connect/clients/dotnet", - "linkTitle": "C#/.NET" + "relref": "develop/interact/search-and-query/query/range", + "linkTitle": "Range" }, { - "relref": "develop/connect/clients/nodejs", - "linkTitle": "Node.js" + "relref": "develop/interact/search-and-query/query/full-text", + "linkTitle": "Full-text" }, { - "relref": "develop/connect/clients/java", - "linkTitle": "Java", - "children": [ - { - "relref": "develop/connect/clients/java/jedis", - "linkTitle": "Jedis" - }, - { - "relref": "develop/connect/clients/java/lettuce", - "linkTitle": "Lettuce" - } - ] + "relref": "develop/interact/search-and-query/query/geo-spatial", + "linkTitle": "Geospatial" }, { - "relref": "develop/connect/clients/go", - "linkTitle": "Go" + "relref": "develop/interact/search-and-query/query/vector-search", + "linkTitle": "Vector" }, { - "relref": "develop/connect/clients/om-clients", - "linkTitle": "Object mapping" + "relref": "develop/interact/search-and-query/query/combined", + "linkTitle": "Combined" }, { - "relref": "develop/connect/clients/comm-supp-clients", - "linkTitle": "Community-supported clients" + "relref": "develop/interact/search-and-query/query/aggregation", + "linkTitle": "Aggregation" } ] - } - ] - }, - { - "relref": "develop/interact", - "linkTitle": "Interact with data", - "children": [ + }, { - "relref": "develop/interact/search-and-query", - "linkTitle": "Search and query", + "relref": "develop/interact/search-and-query/advanced-concepts", + "linkTitle": "Advanced concepts", "children": [ { - "relref": "develop/interact/search-and-query/basic-constructs", - "linkTitle": "Basic constructs", - "children": [ - { - "relref": "develop/interact/search-and-query/basic-constructs/schema-definition", - "linkTitle": "Schema definition" - }, - { - "relref": "develop/interact/search-and-query/basic-constructs/field-and-type-options", - "linkTitle": "Field and type options" - }, - { - "relref": "develop/interact/search-and-query/basic-constructs/configuration-parameters", - "linkTitle": "Configuration parameters" - } - ] + "relref": "develop/interact/search-and-query/advanced-concepts/aggregations", + "linkTitle": "Aggregations" }, { - "relref": "develop/interact/search-and-query/indexing", - "linkTitle": "Indexing" + "relref": "develop/interact/search-and-query/advanced-concepts/stopwords", + "linkTitle": "Stop words" }, { - "relref": "develop/interact/search-and-query/query-use-cases", - "linkTitle": "Use cases" + "relref": "develop/interact/search-and-query/advanced-concepts/escaping", + "linkTitle": "Tokenization" }, { - "relref": "develop/interact/search-and-query/query", - "linkTitle": "Query", - "children": [ - { - "relref": "develop/interact/search-and-query/query/exact-match", - "linkTitle": "Exact match" - }, - { - "relref": "develop/interact/search-and-query/query/range", - "linkTitle": "Range" - }, - { - "relref": "develop/interact/search-and-query/query/full-text", - "linkTitle": "Full-text" - }, - { - "relref": "develop/interact/search-and-query/query/geo-spatial", - "linkTitle": "Geospatial" - }, - { - "relref": "develop/interact/search-and-query/query/vector-search", - "linkTitle": "Vector" - }, - { - "relref": "develop/interact/search-and-query/query/combined", - "linkTitle": "Combined" - }, - { - "relref": "develop/interact/search-and-query/query/aggregation", - "linkTitle": "Aggregation" - } - ] + "relref": "develop/interact/search-and-query/advanced-concepts/dialects", + "linkTitle": "Query dialects" }, { - "relref": "develop/interact/search-and-query/advanced-concepts", - "linkTitle": "Advanced concepts", - "children": [ - { - "relref": "develop/interact/search-and-query/advanced-concepts/aggregations", - "linkTitle": "Aggregations" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/stopwords", - "linkTitle": "Stop words" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/escaping", - "linkTitle": "Tokenization" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/dialects", - "linkTitle": "Query dialects" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/query_syntax", - "linkTitle": "Query syntax" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/sorting", - "linkTitle": "Sorting" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/tags", - "linkTitle": "Tags" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/highlight", - "linkTitle": "Highlighting" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/scoring", - "linkTitle": "Scoring" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/stemming", - "linkTitle": "Stemming" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/synonyms", - "linkTitle": "Synonym" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/spellcheck", - "linkTitle": "Spellchecking" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/phonetic_matching", - "linkTitle": "Phonetic" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/vectors", - "linkTitle": "Vectors" - }, - { - "relref": "develop/interact/search-and-query/advanced-concepts/chinese", - "linkTitle": "Chinese" - } - ] + "relref": "develop/interact/search-and-query/advanced-concepts/query_syntax", + "linkTitle": "Query syntax" }, { - "relref": "develop/interact/search-and-query/administration", - "linkTitle": "Administration", - "children": [ - { - "relref": "develop/interact/search-and-query/administration/overview", - "linkTitle": "Technical overview" - }, - { - "relref": "develop/interact/search-and-query/administration/design", - "linkTitle": "Internal design" - }, - { - "relref": "develop/interact/search-and-query/administration/gc", - "linkTitle": "Garbage collection" - }, - { - "relref": "develop/interact/search-and-query/administration/extensions", - "linkTitle": "Extensions" - }, - { - "relref": "develop/interact/search-and-query/administration/indexing", - "linkTitle": "Indexing" - } - ] + "relref": "develop/interact/search-and-query/advanced-concepts/sorting", + "linkTitle": "Sorting" }, { - "relref": "develop/interact/search-and-query/deprecated", - "linkTitle": "Deprecated", - "children": [ - { - "relref": "develop/interact/search-and-query/deprecated/development", - "linkTitle": "Developer notes" - }, - { - "relref": "develop/interact/search-and-query/deprecated/payloads", - "linkTitle": "Payload" - } - ] + "relref": "develop/interact/search-and-query/advanced-concepts/tags", + "linkTitle": "Tags" }, { - "relref": "develop/interact/search-and-query/img", - "linkTitle": "" - } - ] - }, - { - "relref": "develop/interact/programmability", - "linkTitle": "Programmability", - "children": [ + "relref": "develop/interact/search-and-query/advanced-concepts/highlight", + "linkTitle": "Highlighting" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/scoring", + "linkTitle": "Scoring" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/stemming", + "linkTitle": "Stemming" + }, { - "relref": "develop/interact/programmability/functions-intro", - "linkTitle": "Functions" + "relref": "develop/interact/search-and-query/advanced-concepts/synonyms", + "linkTitle": "Synonym" }, { - "relref": "develop/interact/programmability/eval-intro", - "linkTitle": "Lua scripting" + "relref": "develop/interact/search-and-query/advanced-concepts/spellcheck", + "linkTitle": "Spellchecking" }, { - "relref": "develop/interact/programmability/lua-api", - "linkTitle": "Lua API" + "relref": "develop/interact/search-and-query/advanced-concepts/phonetic_matching", + "linkTitle": "Phonetic" }, { - "relref": "develop/interact/programmability/lua-debugging", - "linkTitle": "Debugging Lua" + "relref": "develop/interact/search-and-query/advanced-concepts/vectors", + "linkTitle": "Vectors" + }, + { + "relref": "develop/interact/search-and-query/advanced-concepts/chinese", + "linkTitle": "Chinese" } ] }, { - "relref": "develop/interact/transactions", - "linkTitle": "Transactions" - }, - { - "relref": "develop/interact/pubsub", - "linkTitle": "Pub/sub" - } - ] - }, - { - "relref": "develop/use", - "linkTitle": "Use Redis", - "children": [ - { - "relref": "develop/use/client-side-caching", - "linkTitle": "Client-side caching" - }, - { - "relref": "develop/use/keyspace-notifications", - "linkTitle": "Keyspace notifications" - }, - { - "relref": "develop/use/patterns", - "linkTitle": "Patterns", + "relref": "develop/interact/search-and-query/administration", + "linkTitle": "Administration", "children": [ { - "relref": "develop/use/patterns/distributed-locks", - "linkTitle": "Distributed locks" + "relref": "develop/interact/search-and-query/administration/overview", + "linkTitle": "Technical overview" }, { - "relref": "develop/use/patterns/bulk-loading", - "linkTitle": "Bulk loading" + "relref": "develop/interact/search-and-query/administration/design", + "linkTitle": "Internal design" }, { - "relref": "develop/use/patterns/twitter-clone", - "linkTitle": "Patterns example" + "relref": "develop/interact/search-and-query/administration/gc", + "linkTitle": "Garbage collection" }, { - "relref": "develop/use/patterns/indexes", - "linkTitle": "", - "children": [ - { - "relref": "develop/use/patterns/indexes/index", - "linkTitle": "Secondary indexing" - } - ] + "relref": "develop/interact/search-and-query/administration/extensions", + "linkTitle": "Extensions" + }, + { + "relref": "develop/interact/search-and-query/administration/indexing", + "linkTitle": "Indexing" } ] }, { - "relref": "develop/use/pipelining", - "linkTitle": "", + "relref": "develop/interact/search-and-query/deprecated", + "linkTitle": "Deprecated", "children": [ { - "relref": "develop/use/pipelining/index", - "linkTitle": "Pipelining" + "relref": "develop/interact/search-and-query/deprecated/development", + "linkTitle": "Developer notes" + }, + { + "relref": "develop/interact/search-and-query/deprecated/payloads", + "linkTitle": "Payload" } ] } ] }, { - "relref": "develop/reference", - "linkTitle": "Reference", + "relref": "develop/interact/programmability", + "linkTitle": "Programmability", "children": [ { - "relref": "develop/reference/command-tips", - "linkTitle": "Command tips" + "relref": "develop/interact/programmability/functions-intro", + "linkTitle": "Functions" }, { - "relref": "develop/reference/sentinel-clients", - "linkTitle": "Sentinel clients" + "relref": "develop/interact/programmability/eval-intro", + "linkTitle": "Lua scripting" }, { - "relref": "develop/reference/modules", - "linkTitle": "Modules API", - "children": [ - { - "relref": "develop/reference/modules/modules-api-ref", - "linkTitle": "API reference" - }, - { - "relref": "develop/reference/modules/modules-native-types", - "linkTitle": "Native types API" - }, - { - "relref": "develop/reference/modules/modules-blocking-ops", - "linkTitle": "Blocking commands" - } - ] - }, - { - "relref": "develop/reference/key-specs", - "linkTitle": "Command key specifications" + "relref": "develop/interact/programmability/lua-api", + "linkTitle": "Lua API" }, { - "relref": "develop/reference/protocol-spec", - "linkTitle": "Protocol spec" - }, + "relref": "develop/interact/programmability/lua-debugging", + "linkTitle": "Debugging Lua" + } + ] + }, + { + "relref": "develop/interact/transactions", + "linkTitle": "Transactions" + }, + { + "relref": "develop/interact/pubsub", + "linkTitle": "Pub/sub" + }, + { + "relref": "develop/use", + "linkTitle": "Use Redis", + "divider":"true" + }, + { + "relref": "develop/use/client-side-caching", + "linkTitle": "Client-side caching" + }, + { + "relref": "develop/use/keyspace-notifications", + "linkTitle": "Keyspace notifications" + }, + { + "relref": "develop/use/patterns", + "linkTitle": "Patterns", + "children": [ { - "relref": "develop/reference/clients", - "linkTitle": "Client handling" + "relref": "develop/use/patterns/distributed-locks", + "linkTitle": "Distributed locks" }, { - "relref": "develop/reference/command-arguments", - "linkTitle": "Command arguments" + "relref": "develop/use/patterns/bulk-loading", + "linkTitle": "Bulk loading" }, { - "relref": "develop/reference/gopher", - "linkTitle": "Gopher protocol" + "relref": "develop/use/patterns/twitter-clone", + "linkTitle": "Patterns example" }, { - "relref": "develop/reference/eviction", - "linkTitle": "", + "relref": "develop/use/patterns/indexes", + "linkTitle": "", "children": [ { - "relref": "develop/reference/eviction/index", - "linkTitle": "Eviction" + "relref": "develop/use/patterns/indexes/index", + "linkTitle": "Secondary indexing" } ] } ] + }, + { + "relref": "develop/use/pipelining", + "linkTitle": "Pipelining" + }, + { + "relref": "develop/reference", + "linkTitle": "Reference", + "divider":"true" + }, + { + "relref": "develop/reference/command-tips", + "linkTitle": "Command tips" + }, + { + "relref": "develop/reference/sentinel-clients", + "linkTitle": "Sentinel clients" + }, + { + "relref": "develop/reference/modules", + "linkTitle": "Modules API", + "children": [ + { + "relref": "develop/reference/modules/modules-api-ref", + "linkTitle": "API reference" + }, + { + "relref": "develop/reference/modules/modules-native-types", + "linkTitle": "Native types API" + }, + { + "relref": "develop/reference/modules/modules-blocking-ops", + "linkTitle": "Blocking commands" + } + ] + }, + { + "relref": "develop/reference/key-specs", + "linkTitle": "Command key specifications" + }, + { + "relref": "develop/reference/protocol-spec", + "linkTitle": "Protocol spec" + }, + { + "relref": "develop/reference/clients", + "linkTitle": "Client handling" + }, + { + "relref": "develop/reference/command-arguments", + "linkTitle": "Command arguments" + }, + { + "relref": "develop/reference/gopher", + "linkTitle": "Gopher protocol" + }, + { + "relref": "develop/reference/eviction", + "linkTitle": "Eviction" } ] } \ No newline at end of file diff --git a/layouts/partials/docs-nav.html b/layouts/partials/docs-nav.html index 249031067..87efd5b44 100644 --- a/layouts/partials/docs-nav.html +++ b/layouts/partials/docs-nav.html @@ -36,6 +36,63 @@ {{ .Scratch.Set "path" $path}} {{ end }} +{{ define "navChildList" -}} +{{ $item := .item -}} +{{ $currentPage := .currentPage -}} +{{ $hidden := not ( $currentPage.IsDescendant (site.GetPage $item.relref) )}} +
    + {{ range $item.children }} + {{ $childPage := site.GetPage .relref }} + {{ $isActive := or ($currentPage.IsDescendant $childPage) (eq $currentPage $childPage) }} + {{- if .divider }} +
  • {{ .linkTitle }} + {{- else if .children }} +
  • + {{ .linkTitle }} + + + + + + + + {{- template "navChildList" ( dict "item" . "currentPage" $currentPage )}} + {{- else }} +
  • {{ .linkTitle }} + {{- end -}} +
  • + {{ end }} +
+{{- end }} + +{{ define "navList" -}} +{{ $root := .root -}} +{{ $currentPage := $.currentPage }} +
    + {{ range $root.children -}} + {{ $childPage := site.GetPage .relref }} + {{ $isActive := or ($currentPage.IsDescendant $childPage) (eq $currentPage $childPage) }} + {{- if .divider }} +
  • {{ .linkTitle }} + {{- else if .children }} +
  • + {{ .linkTitle }} + + + + + + + + {{- template "navChildList" ( dict "item" . "currentPage" $currentPage )}} + {{- else }} +
  • {{ .linkTitle }} + {{- end -}} +
  • + {{ end }} +
+{{- end }} +