From cfd0c878961587cfe07ba1edaf46bf09d21aa686 Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Wed, 26 Aug 2026 14:08:33 +0100 Subject: [PATCH] DOC-7003 fix dead and brittle links in the develop docs Retargets the 18 anchored RESP3 links in lua-api.md onto the protocol spec page, repoints the BLOCK_SIZE link that named a heading which no longer exists, and repairs four malformed or brittle external links. The lua-api.md links all pointed into redis-specifications on master, where 7 of their 11 distinct anchors were dead because the spec never had per-type headings. All 18 now use relref, so the build validates the page and the earlier PR in this stack supplies the two streamed-type anchors. The prose said "streamed aggregate data types" as well, and that missing "d" is exactly what made the anchor dead, so the link text was corrected to match. Three things did not go as the audit predicted, and two of them changed the edit. The Wikipedia LDAP bind link is not broken. The audit reported that its unescaped closing paren truncates the markdown link, but the rendered HTML carries the full href with the anchor intact and no stray text, because CommonMark permits balanced parentheses inside a link destination and goldmark implements that. The detector regex stopped at the first paren. That line is deliberately untouched. Line numbers could not be verified through WebFetch, which reported the MANIFESTO phrase on line 8 and hedged on the boringssl range. Fetching both files at pinned SHAs and counting lines directly showed the MANIFESTO anchor was right all along, and that the boringssl cipher suite list ends at line 130 rather than the linked 131, so the range now stops where the list does. The BLOCK_SIZE link is a retarget under protest. BLOCK_SIZE is no longer documented anywhere on the vectors page; the only trace is DEFAULT_BLOCK_SIZE inside a TRAINING_THRESHOLD table cell. Pointing at the index creation section is the closest honest target, but the underlying gap is editorial and outlives this link fix. Learned: the audit's paren finding was a third detector bug, not a content defect, so an incoming link finding needs its rendered output checked before it earns an edit. Constraint: the two GitHub line anchors depend on their pinned SHAs; repointing either at a moving branch silently reintroduces line drift. Rejected: escaping the parens in the Wikipedia bind link | it already renders correctly, so the edit would have churned a healthy line on a false positive Directive: don't re-fix the Wikipedia bind link on paren-escaping grounds; check the built HTML first. Gaps: the railway #tcp-proxying anchor is unverified, one weak negative fetch and no corroboration; two dead relref anchors outside this ticket's scope are left in place, in eval-intro.md and the generated ft.aliaslist.md. Ticket: DOC-7003 Co-Authored-By: Claude Opus 5 (1M context) --- .../administration/configuration.md | 2 +- content/develop/programmability/_index.md | 2 +- content/develop/programmability/lua-api.md | 30 +++++++++---------- content/develop/whats-new/7-2.md | 4 +-- content/integrate/railway-redis/_index.md | 2 +- .../rs/security/encryption/tls/ciphers.md | 2 +- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/content/develop/ai/search-and-query/administration/configuration.md b/content/develop/ai/search-and-query/administration/configuration.md index a230fa0f60..324d994eb2 100644 --- a/content/develop/ai/search-and-query/administration/configuration.md +++ b/content/develop/ai/search-and-query/administration/configuration.md @@ -564,7 +564,7 @@ UPGRADE_INDEX idx PREFIX 1 tt LANGUAGE french LANGUAGE_FIELD MyLang SCORE 0.5 SC Available in Redis Query Engine 2.4.8 and later. The maximum memory resize (in bytes) for vector indexes. -The maximum memory resize (in bytes) for vector indexes. This value will override default memory limits if you need to allow for a large [`BLOCK_SIZE`]({{< relref "/develop/ai/search-and-query/vectors/#creation-attributes-per-algorithm" >}}). +The maximum memory resize (in bytes) for vector indexes. This value will override default memory limits if you need to allow for a large [`BLOCK_SIZE`]({{< relref "/develop/ai/search-and-query/vectors#create-a-vector-index" >}}). Type: integer diff --git a/content/develop/programmability/_index.md b/content/develop/programmability/_index.md index 00c4e6ca97..5114d20501 100644 --- a/content/develop/programmability/_index.md +++ b/content/develop/programmability/_index.md @@ -25,7 +25,7 @@ Redis provides a programming interface that lets you execute custom scripts on t ## Background -Redis is, by [definition](https://github.com/redis/redis/blob/unstable/MANIFESTO#L7), a _"domain-specific language for abstract data types"_. +Redis is, by [definition](https://github.com/redis/redis/blob/3eaa2cdc44a9b0742f0695f44911b92547995836/MANIFESTO#L7), a _"domain-specific language for abstract data types"_. The language that Redis speaks consists of its [commands]({{< relref "/commands" >}}). Most the commands specialize at manipulating core [data types]({{< relref "/develop/data-types" >}}) in different ways. In many cases, these commands provide all the functionality that a developer requires for managing application data in Redis. diff --git a/content/develop/programmability/lua-api.md b/content/develop/programmability/lua-api.md index 4edc2a7492..3bc546189d 100644 --- a/content/develop/programmability/lua-api.md +++ b/content/develop/programmability/lua-api.md @@ -633,29 +633,29 @@ An executing script may call the [`redis.setresp`](#redis.setresp) function duri Once Redis' replies are in RESP3 protocol, all of the [RESP2 to Lua conversion](#resp2-to-lua-type-conversion) rules apply, with the following additions: -* [RESP3 map reply](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#map-type) -> Lua table with a single _map_ field containing a Lua table representing the fields and values of the map. -* [RESP set reply](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#set-reply) -> Lua table with a single _set_ field containing a Lua table representing the elements of the set as fields, each with the Lua Boolean value of `true`. -* [RESP3 null](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#null-reply) -> Lua `nil`. -* [RESP3 true reply](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#boolean-reply) -> Lua true boolean value. -* [RESP3 false reply](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#boolean-reply) -> Lua false boolean value. -* [RESP3 double reply](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#double-type) -> Lua table with a single _double_ field containing a Lua number representing the double value. -* [RESP3 big number reply](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#big-number-type) -> Lua table with a single _big_number_ field containing a Lua string representing the big number value. -* [Redis verbatim string reply](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#verbatim-string-type) -> Lua table with a single _verbatim_string_ field containing a Lua table with two fields, _string_ and _format_, representing the verbatim string and its format, respectively. +* [RESP3 map reply]({{< relref "/develop/reference/protocol-spec#maps" >}}) -> Lua table with a single _map_ field containing a Lua table representing the fields and values of the map. +* [RESP set reply]({{< relref "/develop/reference/protocol-spec#sets" >}}) -> Lua table with a single _set_ field containing a Lua table representing the elements of the set as fields, each with the Lua Boolean value of `true`. +* [RESP3 null]({{< relref "/develop/reference/protocol-spec#nulls" >}}) -> Lua `nil`. +* [RESP3 true reply]({{< relref "/develop/reference/protocol-spec#booleans" >}}) -> Lua true boolean value. +* [RESP3 false reply]({{< relref "/develop/reference/protocol-spec#booleans" >}}) -> Lua false boolean value. +* [RESP3 double reply]({{< relref "/develop/reference/protocol-spec#doubles" >}}) -> Lua table with a single _double_ field containing a Lua number representing the double value. +* [RESP3 big number reply]({{< relref "/develop/reference/protocol-spec#big-numbers" >}}) -> Lua table with a single _big_number_ field containing a Lua string representing the big number value. +* [Redis verbatim string reply]({{< relref "/develop/reference/protocol-spec#verbatim-strings" >}}) -> Lua table with a single _verbatim_string_ field containing a Lua table with two fields, _string_ and _format_, representing the verbatim string and its format, respectively. **Note:** -the RESP3 [big number](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#big-number-type) and [verbatim strings](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#verbatim-string-type) replies are only supported as of Redis v7.0 and greater. -Also, presently, RESP3's [attributes](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#attribute-type), [streamed strings](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#streamed-strings) and [streamed aggregate data types](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#streamed-aggregate-data-types) are not supported by the Redis Lua API. +the RESP3 [big number]({{< relref "/develop/reference/protocol-spec#big-numbers" >}}) and [verbatim strings]({{< relref "/develop/reference/protocol-spec#verbatim-strings" >}}) replies are only supported as of Redis v7.0 and greater. +Also, presently, RESP3's [attributes]({{< relref "/develop/reference/protocol-spec#attributes" >}}), [streamed strings]({{< relref "/develop/reference/protocol-spec#streamed-strings" >}}) and [streamed aggregated data types]({{< relref "/develop/reference/protocol-spec#streamed-aggregated-data-types" >}}) are not supported by the Redis Lua API. ### Lua to RESP3 type conversion Regardless of the script's choice of protocol version set for replies with the [`redis.setresp()` function] when it calls `redis.call()` or `redis.pcall()`, the user may opt-in to using RESP3 (with the `HELLO 3` command) for the connection. Although the default protocol for incoming client connections is RESP2, the script should honor the user's preference and return adequately-typed RESP3 replies, so the following rules apply on top of those specified in the [Lua to RESP2 type conversion](#lua-to-resp2-type-conversion) section when that is the case. -* Lua Boolean -> [RESP3 Boolean reply](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#boolean-reply) (note that this is a change compared to the RESP2, in which returning a Boolean Lua `true` returned the number 1 to the Redis client, and returning a `false` used to return a `null`. -* Lua table with a single _map_ field set to an associative Lua table -> [RESP3 map reply](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#map-type). -* Lua table with a single _set_ field set to an associative Lua table -> [RESP3 set reply](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#set-type). Values can be set to anything and are discarded anyway. -* Lua table with a single _double_ field to an associative Lua table -> [RESP3 double reply](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#double-type). -* Lua nil -> [RESP3 null](https://github.com/redis/redis-specifications/blob/master/protocol/RESP3.md#null-reply). +* Lua Boolean -> [RESP3 Boolean reply]({{< relref "/develop/reference/protocol-spec#booleans" >}}) (note that this is a change compared to the RESP2, in which returning a Boolean Lua `true` returned the number 1 to the Redis client, and returning a `false` used to return a `null`. +* Lua table with a single _map_ field set to an associative Lua table -> [RESP3 map reply]({{< relref "/develop/reference/protocol-spec#maps" >}}). +* Lua table with a single _set_ field set to an associative Lua table -> [RESP3 set reply]({{< relref "/develop/reference/protocol-spec#sets" >}}). Values can be set to anything and are discarded anyway. +* Lua table with a single _double_ field to an associative Lua table -> [RESP3 double reply]({{< relref "/develop/reference/protocol-spec#doubles" >}}). +* Lua nil -> [RESP3 null]({{< relref "/develop/reference/protocol-spec#nulls" >}}). However, if the connection is set use the RESP2 protocol, and even if the script replies with RESP3-typed responses, Redis will automatically perform a RESP3 to RESP2 conversion of the reply as is the case for regular commands. That means, for example, that returning the RESP3 map type to a RESP2 connection will result in the reply being converted to a flat RESP2 array that consists of alternating field names and their values, rather than a RESP3 map. diff --git a/content/develop/whats-new/7-2.md b/content/develop/whats-new/7-2.md index e37b77601c..7462b7b598 100644 --- a/content/develop/whats-new/7-2.md +++ b/content/develop/whats-new/7-2.md @@ -28,7 +28,7 @@ JSON now includes two new commands for improved data handling: ## Improvements ### Existing data structures -Significant performance improvements have been made across Redis data types. Sorted sets, commonly used for gaming leaderboards, now see performance improvements ranging from [30% to 100%](https://redis.io/blog/introducing-redis-7-2/#:~:text=We%20made%20Redis%20more%20powerful%20for%20developers). +Significant performance improvements have been made across Redis data types. Sorted sets, commonly used for gaming leaderboards, now see performance improvements ranging from [30% to 100%](https://redis.io/blog/introducing-redis-7-2/). Additionally, Redis stream consumer tracking has been enhanced to provide better visibility into consumer activity, and blocked stream commands now return a distinct error when the target key no longer exists. @@ -50,7 +50,7 @@ Redis 7.2 introduces several backward-incompatible changes. Lua scripts no longe Expired keys are now deleted from Redis Search replica indexes, ensuring that queries return an empty array rather than `nil` when the data no longer exists. ### Other changes -Redis Stack 7.2 no longer includes Graph capabilities. For more details, refer to the [RedisGraph End-of-Life Announcement](https://redis.io/blog/redisgraph-eol/#:~:text=After%20January%2031%2C%202025%2C%20RedisGraph,subscriptions%20until%20January%2031%2C%202024.). +Redis Stack 7.2 no longer includes Graph capabilities. For more details, refer to the [RedisGraph End-of-Life Announcement](https://redis.io/blog/redisgraph-eol/). ## Component versions The Redis version 7.2 includes the following components: diff --git a/content/integrate/railway-redis/_index.md b/content/integrate/railway-redis/_index.md index 43c6ac7b4c..1321e0f32b 100644 --- a/content/integrate/railway-redis/_index.md +++ b/content/integrate/railway-redis/_index.md @@ -34,7 +34,7 @@ Since the deployed container is pulled from the [redis](https://hub.docker.com/_ ## Connecting to your Railway Redis Service -It is possible to connect to Redis externally by using the [TCP Proxy](https://docs.railway.com/deploy/exposing-your-app#tcp-proxying?utm_medium=integration&utm_source=docs&utm_campaign=redis) which is enabled by default. +It is possible to connect to Redis externally by using the [TCP Proxy](https://docs.railway.com/deploy/exposing-your-app?utm_medium=integration&utm_source=docs&utm_campaign=redis#tcp-proxying) which is enabled by default. ## Backup and Monitoring diff --git a/content/operate/rs/security/encryption/tls/ciphers.md b/content/operate/rs/security/encryption/tls/ciphers.md index 6275bcee02..4c2780945d 100644 --- a/content/operate/rs/security/encryption/tls/ciphers.md +++ b/content/operate/rs/security/encryption/tls/ciphers.md @@ -65,7 +65,7 @@ To configure cipher suites using the Cluster Manager UI: ### Control plane cipher suites {#control-plane-ciphers-tls-1-2} -As of Redis Software version 6.0.12, control plane cipher suites can use the BoringSSL library format for TLS connections to the Cluster Manager UI. See the BoringSSL documentation for a full list of available [BoringSSL configurations](https://github.com/google/boringssl/blob/master/ssl/test/runner/cipher_suites.go#L99-L131). +As of Redis Software version 6.0.12, control plane cipher suites can use the BoringSSL library format for TLS connections to the Cluster Manager UI. See the BoringSSL documentation for a full list of available [BoringSSL configurations](https://github.com/google/boringssl/blob/887d517832ccd678abf4216531786ca675928629/ssl/test/runner/cipher_suites.go#L99-L130). #### Configure TLS 1.2 control plane cipher suites