diff --git a/content/commands/acl-log.md b/content/commands/acl-log.md index c6d8071e49..aab6c5e846 100644 --- a/content/commands/acl-log.md +++ b/content/commands/acl-log.md @@ -92,7 +92,7 @@ Each log entry is composed of the following fields: 5. `username`: The username that executed the command that caused the security events or the username that had a failed authentication attempt. 6. `age-seconds`: Age of the log entry in seconds. 7. `client-info`: Displays the client info of a client which caused one of the security events. -8. `entry-id`: The sequence number of the entry (starting at 0) since the server process started. Can also be used to check if items were “lost”, if they fell between periods. +8. `entry-id`: The sequence number of the entry (starting at 0) since the server process started. Can also be used to check if items were "lost", if they fell between periods. 9. `timestamp-created`: A UNIX timestamp in `milliseconds` at the time the entry was first created. 10. `timestamp-last-updated`: A UNIX timestamp in `milliseconds` at the time the entry was last updated. diff --git a/content/commands/cf.count.md b/content/commands/cf.count.md index 305c79ff99..9c9df8e48c 100644 --- a/content/commands/cf.count.md +++ b/content/commands/cf.count.md @@ -63,7 +63,7 @@ redis> CF.COUNT cf item2 ## Return information -{{< multitabs id=“cf-count-return-info" +{{< multitabs id="cf-count-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/cf.del.md b/content/commands/cf.del.md index d4d0de9561..776ddedb60 100644 --- a/content/commands/cf.del.md +++ b/content/commands/cf.del.md @@ -77,7 +77,7 @@ redis> CF.DEL cf item2 ## Return information -{{< multitabs id=“cf-del-return-info" +{{< multitabs id="cf-del-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/cf.info.md b/content/commands/cf.info.md index c9988b2244..12f39627c5 100644 --- a/content/commands/cf.info.md +++ b/content/commands/cf.info.md @@ -64,7 +64,7 @@ redis> CF.INFO cf One of the following: -{{< multitabs id=“cf-info-return-info" +{{< multitabs id="cf-info-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/cf.insert.md b/content/commands/cf.insert.md index 42d55fd989..7f37295927 100644 --- a/content/commands/cf.insert.md +++ b/content/commands/cf.insert.md @@ -109,7 +109,7 @@ redis> CF.INSERT cf2 ITEMS 1 1 1 1 ## Return information -{{< multitabs id=“cf-insert-return-info" +{{< multitabs id="cf-insert-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/cf.insertnx.md b/content/commands/cf.insertnx.md index 0e17e972a4..e642ad7af3 100644 --- a/content/commands/cf.insertnx.md +++ b/content/commands/cf.insertnx.md @@ -119,7 +119,7 @@ redis> CF.INSERTNX cf_new CAPACITY 1000 NOCREATE ITEMS item1 item2 ## Return information -{{< multitabs id=“cf-insert-return-info" +{{< multitabs id="cf-insert-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/cluster-slot-stats.md b/content/commands/cluster-slot-stats.md index 973bfa53da..019a9d2426 100644 --- a/content/commands/cluster-slot-stats.md +++ b/content/commands/cluster-slot-stats.md @@ -110,7 +110,7 @@ The command reports on the following statistics: ## Return information -{{< multitabs id=“cmd-name-return-info" +{{< multitabs id="cmd-name-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/cms.incrby.md b/content/commands/cms.incrby.md index 2711d39e14..0aed7d85e0 100644 --- a/content/commands/cms.incrby.md +++ b/content/commands/cms.incrby.md @@ -55,7 +55,7 @@ redis> CMS.INCRBY test foo 10 bar 42 ## Return information -{{< multitabs id=“cms-incrby-return-info" +{{< multitabs id="cms-incrby-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/cms.info.md b/content/commands/cms.info.md index a33151f7bb..88d94739cd 100644 --- a/content/commands/cms.info.md +++ b/content/commands/cms.info.md @@ -49,7 +49,7 @@ redis> CMS.INFO test ## Return information -{{< multitabs id=“cms-info-return-info" +{{< multitabs id="cms-info-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/cms.initbydim.md b/content/commands/cms.initbydim.md index 2e1b55d034..32ba2dde04 100644 --- a/content/commands/cms.initbydim.md +++ b/content/commands/cms.initbydim.md @@ -51,7 +51,7 @@ OK ## Return information -{{< multitabs id=“cms-initbydim-return-info" +{{< multitabs id="cms-initbydim-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/cms.initbyprob.md b/content/commands/cms.initbyprob.md index 03bc93bcdb..f032ad456a 100644 --- a/content/commands/cms.initbyprob.md +++ b/content/commands/cms.initbyprob.md @@ -55,7 +55,7 @@ OK ## Return information -{{< multitabs id=“cms-initbyprob-return-info" +{{< multitabs id="cms-initbyprob-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/cms.merge.md b/content/commands/cms.merge.md index 216c070dfd..173948bac3 100644 --- a/content/commands/cms.merge.md +++ b/content/commands/cms.merge.md @@ -62,7 +62,7 @@ OK ## Return information -{{< multitabs id=“cms-merge-return-info" +{{< multitabs id="cms-merge-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/cms.query.md b/content/commands/cms.query.md index 868c0b0ec0..f12f5d0296 100644 --- a/content/commands/cms.query.md +++ b/content/commands/cms.query.md @@ -48,7 +48,7 @@ redis> CMS.QUERY test foo bar ## Return information -{{< multitabs id=“cms-merge-return-info" +{{< multitabs id="cms-merge-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/info.md b/content/commands/info.md index 78dab1ae5f..142334345f 100644 --- a/content/commands/info.md +++ b/content/commands/info.md @@ -626,7 +626,7 @@ It won't be included when `INFO` or `INFO ALL` are called, and it is returned on Note: key memory usage is different on Redis Software or Redis Cloud active-active databases than on non-active-active databases. This is because memory usage includes some amount of CRDB overhead. -Additionally, for JSON keys, Redis implements a “shared string” mechanism to save memory when the same JSON field names or field values of type string are used more than once (either inter-key or intra-key). +Additionally, for JSON keys, Redis implements a "shared string" mechanism to save memory when the same JSON field names or field values of type string are used more than once (either inter-key or intra-key). In such cases, instead of storing the field names or values many times, Redis stores them only once. This mechanism is not in place for active-active databases. On non-active-active databases, `INFO` (Memory > used_memory) reports that the shared memory is counted, but only once for all keys. On active-active databases, there is no shared memory, so if strings are repeated, they are stored multiple times. diff --git a/content/commands/tdigest.add.md b/content/commands/tdigest.add.md index 0fa39adbcd..bbd52b7186 100644 --- a/content/commands/tdigest.add.md +++ b/content/commands/tdigest.add.md @@ -63,7 +63,7 @@ redis> TDIGEST.ADD t string ## Return information -{{< multitabs id=“tdigest-add-return-info" +{{< multitabs id="tdigest-add-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.byrank.md b/content/commands/tdigest.byrank.md index 1cb8f2dca1..40097fe49d 100644 --- a/content/commands/tdigest.byrank.md +++ b/content/commands/tdigest.byrank.md @@ -80,7 +80,7 @@ redis> TDIGEST.BYRANK t 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ## Return information -{{< multitabs id=“tdigest-byrank-return-info" +{{< multitabs id="tdigest-byrank-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.byrevrank.md b/content/commands/tdigest.byrevrank.md index 59b5748081..79bfe6f481 100644 --- a/content/commands/tdigest.byrevrank.md +++ b/content/commands/tdigest.byrevrank.md @@ -80,7 +80,7 @@ redis> TDIGEST.BYREVRANK t 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ## Return information -{{< multitabs id=“tdigest-byrevrank-return-info" +{{< multitabs id="tdigest-byrevrank-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.cdf.md b/content/commands/tdigest.cdf.md index fddb73ff6c..84e2ff3efa 100644 --- a/content/commands/tdigest.cdf.md +++ b/content/commands/tdigest.cdf.md @@ -69,7 +69,7 @@ redis> TDIGEST.CDF t 0 1 2 3 4 5 6 ## Return information -{{< multitabs id=“tdigest-cdf-return-info" +{{< multitabs id="tdigest-cdf-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.create.md b/content/commands/tdigest.create.md index 63447aa091..060888adba 100644 --- a/content/commands/tdigest.create.md +++ b/content/commands/tdigest.create.md @@ -57,7 +57,7 @@ OK ## Return information -{{< multitabs id=“tdigest-create-return-info" +{{< multitabs id="tdigest-create-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.info.md b/content/commands/tdigest.info.md index 2010e27be6..9461ee6ebe 100644 --- a/content/commands/tdigest.info.md +++ b/content/commands/tdigest.info.md @@ -67,7 +67,7 @@ redis> TDIGEST.INFO t ## Return information -{{< multitabs id=“tdigest-info-return-info" +{{< multitabs id="tdigest-info-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.max.md b/content/commands/tdigest.max.md index 8814fa3274..febd4c2c53 100644 --- a/content/commands/tdigest.max.md +++ b/content/commands/tdigest.max.md @@ -53,7 +53,7 @@ redis>TDIGEST.MAX t ## Return information -{{< multitabs id=“tdigest-max-return-info" +{{< multitabs id="tdigest-max-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.merge.md b/content/commands/tdigest.merge.md index 4e3cd780b3..59797182ff 100644 --- a/content/commands/tdigest.merge.md +++ b/content/commands/tdigest.merge.md @@ -110,7 +110,7 @@ redis> TDIGEST.BYRANK sM 0 1 2 3 4 ## Return information -{{< multitabs id=“tdigest-merge-return-info" +{{< multitabs id="tdigest-merge-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.min.md b/content/commands/tdigest.min.md index 8bec508bf4..8699c78eee 100644 --- a/content/commands/tdigest.min.md +++ b/content/commands/tdigest.min.md @@ -53,7 +53,7 @@ redis> TDIGEST.MIN t ## Return information -{{< multitabs id=“tdigest-min-return-info" +{{< multitabs id="tdigest-min-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.quantile.md b/content/commands/tdigest.quantile.md index f7b10791ac..48466fc373 100644 --- a/content/commands/tdigest.quantile.md +++ b/content/commands/tdigest.quantile.md @@ -71,7 +71,7 @@ redis> TDIGEST.QUANTILE t 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ## Return information -{{< multitabs id=“tdigest-quantile-return-info" +{{< multitabs id="tdigest-quantile-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.rank.md b/content/commands/tdigest.rank.md index b380655381..75e992e228 100644 --- a/content/commands/tdigest.rank.md +++ b/content/commands/tdigest.rank.md @@ -92,7 +92,7 @@ redis> TDIGEST.REVRANK s 10 20 ## Return information -{{< multitabs id=“tdigest-rank-return-info" +{{< multitabs id="tdigest-rank-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.reset.md b/content/commands/tdigest.reset.md index ddb6ae8f07..a072f2e382 100644 --- a/content/commands/tdigest.reset.md +++ b/content/commands/tdigest.reset.md @@ -48,7 +48,7 @@ OK ## Return information -{{< multitabs id=“tdigest-reset-return-info" +{{< multitabs id="tdigest-reset-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.revrank.md b/content/commands/tdigest.revrank.md index 4d83d153ec..15aded647d 100644 --- a/content/commands/tdigest.revrank.md +++ b/content/commands/tdigest.revrank.md @@ -106,7 +106,7 @@ redis> TDIGEST.REVRANK s 10 20 ## Return information -{{< multitabs id=“tdigest-revrank-return-info" +{{< multitabs id="tdigest-revrank-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/tdigest.trimmed_mean.md b/content/commands/tdigest.trimmed_mean.md index fc72364438..6d644d491a 100644 --- a/content/commands/tdigest.trimmed_mean.md +++ b/content/commands/tdigest.trimmed_mean.md @@ -78,7 +78,7 @@ redis> TDIGEST.TRIMMED_MEAN t 0 1 ## Return information -{{< multitabs id=“tdigest-trimmedmean-return-info" +{{< multitabs id="tdigest-trimmedmean-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/topk.add.md b/content/commands/topk.add.md index 4d71c68a2b..0cab355823 100644 --- a/content/commands/topk.add.md +++ b/content/commands/topk.add.md @@ -54,7 +54,7 @@ redis> TOPK.ADD topk foo bar 42 ## Return information -{{< multitabs id=“topk-add-return-info" +{{< multitabs id="topk-add-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/topk.count.md b/content/commands/topk.count.md index 610b657158..9cd7d1c23c 100644 --- a/content/commands/topk.count.md +++ b/content/commands/topk.count.md @@ -56,7 +56,7 @@ redis> TOPK.COUNT topk foo 42 nonexist ## Return information -{{< multitabs id=“topk-count-return-info" +{{< multitabs id="topk-count-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/topk.incrby.md b/content/commands/topk.incrby.md index 147638eef7..4b9fc9df13 100644 --- a/content/commands/topk.incrby.md +++ b/content/commands/topk.incrby.md @@ -63,7 +63,7 @@ redis> TOPK.INCRBY topk foo 3 bar 2 42 30 ## Return information -{{< multitabs id=“topk-incrby-return-info" +{{< multitabs id="topk-incrby-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/topk.info.md b/content/commands/topk.info.md index 63f1836dce..bc53da8a0e 100644 --- a/content/commands/topk.info.md +++ b/content/commands/topk.info.md @@ -51,7 +51,7 @@ TOPK.INFO topk ## Return information -{{< multitabs id=“topk-info-return-info" +{{< multitabs id="topk-info-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/topk.list.md b/content/commands/topk.list.md index 9705e66614..677e4837b4 100644 --- a/content/commands/topk.list.md +++ b/content/commands/topk.list.md @@ -64,7 +64,7 @@ TOPK.LIST topk WITHCOUNT k (or less) items in the given Top-k sketch. The list is sorted by decreased count estimation. -{{< multitabs id=“topk-info-return-info" +{{< multitabs id="topk-info-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/topk.query.md b/content/commands/topk.query.md index 22cc839990..541f7cc725 100644 --- a/content/commands/topk.query.md +++ b/content/commands/topk.query.md @@ -49,7 +49,7 @@ redis> TOPK.QUERY topk 42 nonexist ## Return information -{{< multitabs id=“topk-query-return-info" +{{< multitabs id="topk-query-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/commands/topk.reserve.md b/content/commands/topk.reserve.md index 394d5cc984..25b2c6d4fb 100644 --- a/content/commands/topk.reserve.md +++ b/content/commands/topk.reserve.md @@ -62,7 +62,7 @@ OK ## Return information -{{< multitabs id=“topk-reserve-return-info" +{{< multitabs id="topk-reserve-return-info" tab1="RESP2" tab2="RESP3" >}} diff --git a/content/develop/ai/search-and-query/administration/design.md b/content/develop/ai/search-and-query/administration/design.md index 9fd2b4768a..37639639fd 100644 --- a/content/develop/ai/search-and-query/administration/design.md +++ b/content/develop/ai/search-and-query/administration/design.md @@ -134,7 +134,7 @@ As of release 0.6, the implementation uses a multi-level range tree, saving rang ## Auto-complete and fuzzy suggestions -Another important feature for searching and querying is auto-completion or suggestion. It allows you to create dictionaries of weighted terms, and then query them for completion suggestions to a given user prefix. For example, if you put the term “lcd tv” into a dictionary, sending the prefix “lc” will return it as a result. The dictionary is modeled as a compressed trie (prefix tree) with weights, that is traversed to find the top suffixes of a prefix. +Another important feature for searching and querying is auto-completion or suggestion. It allows you to create dictionaries of weighted terms, and then query them for completion suggestions to a given user prefix. For example, if you put the term "lcd tv" into a dictionary, sending the prefix "lc" will return it as a result. The dictionary is modeled as a compressed trie (prefix tree) with weights, that is traversed to find the top suffixes of a prefix. Redis Open Source also allows for fuzzy suggestions, meaning you can get suggestions to user prefixes even if the user has a typo in the prefix. This is enabled using a Levenshtein automaton, allowing efficient searching of a dictionary for all terms within a maximal Levenshtein distance of a term or prefix. Suggestions are weighted based on both their original score and their distance from a prefix typed by the user. Only suggestions where the prefix is up to one Levenshtein distance away from the typed prefix are supported for performance reasons. diff --git a/content/develop/ai/search-and-query/administration/overview.md b/content/develop/ai/search-and-query/administration/overview.md index b5fa5e8f61..d59e5ad0d6 100644 --- a/content/develop/ai/search-and-query/administration/overview.md +++ b/content/develop/ai/search-and-query/administration/overview.md @@ -287,7 +287,7 @@ Highlighting will highlight the found term and its variants with a user-defined Another important feature for Redis Open Source is its autocomplete engine. This allows users to create dictionaries of weighted terms, and then query them for completion suggestions to a given user prefix. Completions can have payloads, which are user-provided pieces of data that can be used for display. For example, completing the names of users, it is possible to add extra metadata about users to be displayed. -For example, if a user starts to put the term “lcd tv” into a dictionary, sending the prefix “lc” will return the full term as a result. The dictionary is modeled as a compact trie (prefix tree) with weights, which is traversed to find the top suffixes of a prefix. +For example, if a user starts to put the term "lcd tv" into a dictionary, sending the prefix "lc" will return the full term as a result. The dictionary is modeled as a compact trie (prefix tree) with weights, which is traversed to find the top suffixes of a prefix. Redis also allows fuzzy suggestions, meaning you can get suggestions to prefixes even if the user makes a typo in their prefix. This is enabled using a Levenshtein automaton, allowing efficient searching of the dictionary for all terms within a maximal Levenshtein distance of a term or prefix. Suggestions are then weighted based on both their original score and their distance from the prefix typed by the user. diff --git a/content/develop/clients/dotnet/vecsearch.md b/content/develop/clients/dotnet/vecsearch.md index 55b241c9c7..5762c18996 100644 --- a/content/develop/clients/dotnet/vecsearch.md +++ b/content/develop/clients/dotnet/vecsearch.md @@ -207,7 +207,7 @@ for more information. ```csharp private static byte[] GetEmbeddingFromAzure(string sentence){ - Uri oaiEndpoint = new ("your-azure-openai-endpoint”); + Uri oaiEndpoint = new ("your-azure-openai-endpoint"); string oaiKey = "your-openai-key"; AzureKeyCredential credentials = new (oaiKey); diff --git a/content/develop/clients/patterns/distributed-locks.md b/content/develop/clients/patterns/distributed-locks.md index 29b0b7e56f..0834735a51 100644 --- a/content/develop/clients/patterns/distributed-locks.md +++ b/content/develop/clients/patterns/distributed-locks.md @@ -96,7 +96,7 @@ To acquire the lock, the way to go is the following: SET resource_name my_random_value NX PX 30000 The command will set the key only if it does not already exist (`NX` option), with an expire of 30000 milliseconds (`PX` option). -The key is set to a value “my\_random\_value”. This value must be unique across all clients and all lock requests. +The key is set to a value "my\_random\_value". This value must be unique across all clients and all lock requests. Basically the random value is used in order to release the lock in a safe way, with a script that tells Redis: remove the key only if it exists and the value stored at the key is exactly the one I expect to be. This is accomplished by the following Lua script: @@ -107,7 +107,7 @@ Basically the random value is used in order to release the lock in a safe way, w end This is important in order to avoid removing a lock that was created by another client. For example a client may acquire the lock, get blocked performing some operation for longer than the lock validity time (the time at which the key will expire), and later remove the lock, that was already acquired by some other client. -Using just [`DEL`]({{< relref "/commands/del" >}}) is not safe as a client may remove another client's lock. With the above script instead every lock is “signed” with a random string, so the lock will be removed only if it is still the one that was set by the client trying to remove it. +Using just [`DEL`]({{< relref "/commands/del" >}}) is not safe as a client may remove another client's lock. With the above script instead every lock is "signed" with a random string, so the lock will be removed only if it is still the one that was set by the client trying to remove it. What should this random string be? We assume it’s 20 bytes from `/dev/urandom`, but you can find cheaper ways to make it unique enough for your tasks. For example a safe pick is to seed RC4 with `/dev/urandom`, and generate a pseudo random stream from that. diff --git a/content/develop/data-types/json/resp3.md b/content/develop/data-types/json/resp3.md index d8f25ce314..b8a91bc4ae 100644 --- a/content/develop/data-types/json/resp3.md +++ b/content/develop/data-types/json/resp3.md @@ -21,7 +21,7 @@ This page provides a brief comparison between RESP2 and RESP3 responses for JSON ### JSON command replies comparison -The types are described using a [“TypeScript-like” syntax](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html). `Array` denotes an [array](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#arrays) where the type of elements is known, but the number of elements is not. +The types are described using a ["TypeScript-like" syntax](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html). `Array` denotes an [array](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#arrays) where the type of elements is known, but the number of elements is not. | Command | RESP2 | RESP3 | |---------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/content/develop/tools/insight/debugging.md b/content/develop/tools/insight/debugging.md index c604e02eae..b6a5c551c3 100644 --- a/content/develop/tools/insight/debugging.md +++ b/content/develop/tools/insight/debugging.md @@ -29,7 +29,7 @@ Run the following command to launch Redis Insight in debug mode to investigate c * **Windows**: - `cmd /C “set DEBUG=ioredis* && ".\Redis Insight.exe"”` + `cmd /C "set DEBUG=ioredis* && ".\Redis Insight.exe""` * **macOS** (from the Applications folder): @@ -54,7 +54,7 @@ These are the locations on supported platforms: * **Windows**: - `cmd /C “set DEBUG=* && ".\Redis Insight.exe"”` + `cmd /C "set DEBUG=* && ".\Redis Insight.exe""` * **macOS** (from the Applications folder): @@ -68,7 +68,7 @@ These are the locations on supported platforms: * **Windows**: - `cmd /C “set STDOUT_LOGGER=true && set LOG_LEVEL=debug && set LOGGER_OMIT_DATA=false && ".\Redis Insight.exe"”` + `cmd /C "set STDOUT_LOGGER=true && set LOG_LEVEL=debug && set LOGGER_OMIT_DATA=false && ".\Redis Insight.exe""` * **macOS** (from the Applications folder): @@ -83,7 +83,7 @@ These are the locations on supported platforms: ### To log everything * **Windows**: - `cmd /C “set STDOUT_LOGGER=true && set LOG_LEVEL=debug && set LOGGER_OMIT_DATA=false && set DEBUG=* && ".\Redis Insight.exe"”` + `cmd /C "set STDOUT_LOGGER=true && set LOG_LEVEL=debug && set LOGGER_OMIT_DATA=false && set DEBUG=* && ".\Redis Insight.exe""` * **macOS** (from the Applications folder): diff --git a/content/develop/tools/insight/release-notes/v.2.70.0.md b/content/develop/tools/insight/release-notes/v.2.70.0.md index f3c242c751..56490ba0e6 100644 --- a/content/develop/tools/insight/release-notes/v.2.70.0.md +++ b/content/develop/tools/insight/release-notes/v.2.70.0.md @@ -22,7 +22,7 @@ This is the General Availability (GA) release of Redis Insight 2.70. - [#4483](https://github.com/RedisInsight/RedisInsight/pull/4483) Added a confirmation prompt when attempting to create a duplicate key in a JSON object, preventing silent overwrites. **Bugs** -- [#4514](https://github.com/RedisInsight/RedisInsight/pull/4514) Fixed an issue ([#4478](https://github.com/RedisInsight/RedisInsight/issues/4478)) where accessing a JSON key could result in a “Cannot read properties of undefined (reading '0')” error. +- [#4514](https://github.com/RedisInsight/RedisInsight/pull/4514) Fixed an issue ([#4478](https://github.com/RedisInsight/RedisInsight/issues/4478)) where accessing a JSON key could result in a "Cannot read properties of undefined (reading '0')" error. **SHA-256 Checksums** | Package | SHA-256 | diff --git a/content/develop/tools/insight/release-notes/v1.6.0.md b/content/develop/tools/insight/release-notes/v1.6.0.md index 2f85387dc8..a78fb37fff 100644 --- a/content/develop/tools/insight/release-notes/v1.6.0.md +++ b/content/develop/tools/insight/release-notes/v1.6.0.md @@ -29,7 +29,7 @@ Enhancements and bug fixes - Fixed filtering the keys by data structures could be to wrong. - Fixed behavior of EXISTS and TYPE command when those have ACL restrictions. - Fixed behavior when keys matching filters have ACL restrictions. - - Improved “Stop Scan” button behavior to respond immediately. + - Improved "Stop Scan" button behavior to respond immediately. - Added visual indicator to show that by default, the browser is filtering out inner keys from modules. ## 1.6.2 (30 June 2020) diff --git a/content/glossary/_index.md b/content/glossary/_index.md index 5dc5dc5aa8..c8158cab6f 100644 --- a/content/glossary/_index.md +++ b/content/glossary/_index.md @@ -29,7 +29,7 @@ More info: [Active-Active geo-distributed Redis]({{}}) which is made up of its own master and replica [shards]({{}}) spanning a single [cluster]({{}}). +A "member database" of a global [Active-Active database]({{}}) which is made up of its own master and replica [shards]({{}}) spanning a single [cluster]({{}}). More info: [Active-Active database instances]({{}}) {{%/definition%}} @@ -325,7 +325,7 @@ More info: [operator pattern](https://kubernetes.io/docs/concepts/extend-kuberne {{%/definition%}} {{%definition "Out-of-Memory (OOM)"%}} -If a member [Active-Active database]({{}}) is in an out of memory situation, that member is marked “inconsistent” by Redis Enterprise Software, the member stops responding to user traffic, and the [syncer]({{}}) initiates full reconciliation with other peers in the Active-Active database. +If a member [Active-Active database]({{}}) is in an out of memory situation, that member is marked "inconsistent" by Redis Enterprise Software, the member stops responding to user traffic, and the [syncer]({{}}) initiates full reconciliation with other peers in the Active-Active database. More info: [Active-Active database troubleshooting]({{}}), [Memory management]({{}}) {{%/definition%}} diff --git a/content/integrate/redisom-for-java/_index.md b/content/integrate/redisom-for-java/_index.md index 154c8442e3..4e82e2f2c1 100644 --- a/content/integrate/redisom-for-java/_index.md +++ b/content/integrate/redisom-for-java/_index.md @@ -289,7 +289,7 @@ public class SkeletonApplication { return args -> { repo.deleteAll(); - String thorSays = “The Rabbit Is Correct, And Clearly The Smartest One Among You.”; + String thorSays = "The Rabbit Is Correct, And Clearly The Smartest One Among You."; // Serendipity, 248 Seven Mile Beach Rd, Broken Head NSW 2481, Australia Address thorsAddress = Address.of("248", "Seven Mile Beach Rd", "Broken Head", "NSW", "2481", "Australia"); @@ -318,7 +318,7 @@ keys * {{< / highlight >}} If you want to keep an eye on the commands issued against the server, Redis Insight provides a -profiler. If you click the "profile" button at the bottom of the screen, it should reveal the profiler window, and there you can start the profiler by clicking on the “Start Profiler” arrow. +profiler. If you click the "profile" button at the bottom of the screen, it should reveal the profiler window, and there you can start the profiler by clicking on the "Start Profiler" arrow. Let's start our Spring Boot application by using the Maven command: @@ -334,7 +334,7 @@ Now we can inspect the newly loaded data by simply refreshing the "Keys" view: ![Redis Insight](./images/004_stack_spring.png "Redis Insight") -You should now see two keys; one for the JSON document for “Thor” and one for the Redis Set that Spring Data Redis (and Redis OM Spring) use to maintain the list of primary keys for an entity. +You should now see two keys; one for the JSON document for "Thor" and one for the Redis Set that Spring Data Redis (and Redis OM Spring) use to maintain the list of primary keys for an entity. You can select any of the keys on the key list to reveal their contents on the details panel. For JSON documents, we get a nice tree-view: @@ -403,12 +403,12 @@ CommandLineRunner loadTestData(PeopleRepository repo) { return args -> { repo.deleteAll(); - String thorSays = “The Rabbit Is Correct, And Clearly The Smartest One Among You.”; - String ironmanSays = “Doth mother know you weareth her drapes?”; - String blackWidowSays = “Hey, fellas. Either one of you know where the Smithsonian is? I’m here to pick up a fossil.”; - String wandaMaximoffSays = “You Guys Know I Can Move Things With My Mind, Right?”; - String gamoraSays = “I Am Going To Die Surrounded By The Biggest Idiots In The Galaxy.”; - String nickFurySays = “Sir, I’m Gonna Have To Ask You To Exit The Donut”; + String thorSays = "The Rabbit Is Correct, And Clearly The Smartest One Among You."; + String ironmanSays = "Doth mother know you weareth her drapes?"; + String blackWidowSays = "Hey, fellas. Either one of you know where the Smithsonian is? I’m here to pick up a fossil."; + String wandaMaximoffSays = "You Guys Know I Can Move Things With My Mind, Right?"; + String gamoraSays = "I Am Going To Die Surrounded By The Biggest Idiots In The Galaxy."; + String nickFurySays = "Sir, I’m Gonna Have To Ask You To Exit The Donut"; // Serendipity, 248 Seven Mile Beach Rd, Broken Head NSW 2481, Australia Address thorsAddress = Address.of("248", "Seven Mile Beach Rd", "Broken Head", "NSW", "2481", "Australia"); @@ -482,7 +482,7 @@ We can see the `/all` method from our people-controller-v-1, expanding that you ![SwaggerUI](./images/008_stack_spring.png "SwaggerUI") -And if you select “Try it out” and then “Execute,” you should see the resulting JSON array containing all People documents in the database: +And if you select "Try it out" and then "Execute," you should see the resulting JSON array containing all People documents in the database: ![SwaggerUI](./images/009_stack_spring.png "SwaggerUI") @@ -534,7 +534,7 @@ Refreshing the UI, we can see the new endpoint. Let’s try it with some data: ![SwaggerUI](./images/011_stack_spring.png "SwaggerUI") Invoke the endpoint with the value `30` for `min` and `37` for `max` we get two hits; -“Scarlett Johansson” and “Elizabeth Olsen” are the only two people with ages between 30 and 37. +"Scarlett Johansson" and "Elizabeth Olsen" are the only two people with ages between 30 and 37. ![SwaggerUI](./images/012_stack_spring.png "SwaggerUI") @@ -571,7 +571,7 @@ And the resulting query on Redis Insight: ![Redis Insight](./images/016_stack_spring.png "Redis Insight Profiler") -Now let’s try a Geospatial query. The `homeLoc` property is a Geo Point, and by using the “Near” predicate in our method declaration, we can get a finder that takes a point and a radius around that point to search: +Now let’s try a Geospatial query. The `homeLoc` property is a Geo Point, and by using the "Near" predicate in our method declaration, we can get a finder that takes a point and a radius around that point to search: {{< highlight java >}} // Draws a circular geofilter around a spot and returns all people in that @@ -616,7 +616,7 @@ Iterable byPersonalStatement(@RequestParam("q") String q) { } {{< / highlight >}} -Once again, we can try it on the Swagger UI with the text “mother”: +Once again, we can try it on the Swagger UI with the text "mother": ![SwaggerUI](./images/020_stack_spring.png "SwaggerUI") @@ -624,7 +624,7 @@ Which results in a single hit, the record for Robert Downey Jr.: ![SwaggerUI](./images/021_stack_spring.png "SwaggerUI") -Notice that you can pass a query string like “moth*” with wildcards if needed +Notice that you can pass a query string like "moth*" with wildcards if needed ![SwaggerUI](./images/022_stack_spring.png "SwaggerUI") diff --git a/content/operate/oss_and_stack/stack-with-enterprise/modules-lifecycle.md b/content/operate/oss_and_stack/stack-with-enterprise/modules-lifecycle.md index 9d71aff0df..bc63034b8d 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/modules-lifecycle.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/modules-lifecycle.md @@ -17,7 +17,7 @@ The modules included in Redis Stack also follow a release lifecycle and schedule Redis modules use a three-place numbering scheme to identify released versions. -The format is “Major1.Major2.Minor”. +The format is "Major1.Major2.Minor". - Major sections of the version number represent fundamental changes to functionality and feature capabilities. The _Major1_ and _Major2_ part of the version number are incremented according to the size and scale of the changes in each release. diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.0-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.0-release-notes.md index 41cf9fa34c..7aa6551681 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.0-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.0-release-notes.md @@ -151,7 +151,7 @@ You can use these new categories in your ACL rules. The following time series commands retrieve data from all keys that match a given filter expression: `TS.MGET`, `TS.MRANGE`, and `TS.MREVRANGE`. -There can be a case where a user may have to only some of the matching keys. In such cases, the command’s result is an error message: “*current user doesn't have read permission to one or more keys that match the specified filter*”. +There can be a case where a user may have to only some of the matching keys. In such cases, the command’s result is an error message: "*current user doesn't have read permission to one or more keys that match the specified filter*". On the other hand, `TS.QUERYINDEX` does not require `@read` access to the keys that match the specified filter, as it accesses only time series metadata (name and labels) and not content (measurements). diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-1.6-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-1.6-release-notes.md index fb4f3f7734..35443de6e6 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-1.6-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-1.6-release-notes.md @@ -176,7 +176,7 @@ Full details: - Added functionality - #[658](https://github.com/RediSearch/RediSearch/issues/658) `FT.ADD … REPLACE … NOCREATE` will not add the document if the document does not exist. - #[575](https://github.com/RediSearch/RediSearch/issues/575) Add index aliasing. This allows users to provide (or remove) ‘links’ to indexes. The commands are `FT.ALIASADD`, `FT.ALIASDEL`, and `FT.ALIASUPDATE`. - - New C API to make RediSearch embeddable in other Redis modules. This API allows other Redis modules to use functionality of RedisSearch without actually having the “module” functionality active. Note that this must still be used on Redis proper. Modules that are already incorporating this API + - New C API to make RediSearch embeddable in other Redis modules. This API allows other Redis modules to use functionality of RedisSearch without actually having the "module" functionality active. Note that this must still be used on Redis proper. Modules that are already incorporating this API - [RedisGraph](https://github.com/RedisGraph/RedisGraph/releases/tag/v2.0.1) GA - [RedisTimeSeries](https://github.com/RedisTimeSeries/RedisTimeSeries/pull/186) (WIP) - [RedisJSON](https://github.com/RedisJSON/RedisJSON2) (WIP) diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.4-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.4-release-notes.md index c99590ea7c..499bd49023 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.4-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.4-release-notes.md @@ -216,7 +216,7 @@ All VSS queries or any query using the `PARAMS` option must use Dialect version This index is a modified implementation of the library written by the author of this influential [academic paper](https://arxiv.org/abs/1603.09320). An HNSW vector index is used when the speed of query execution is preferred over recall. The results returned are approximate nearest neighbors (ANNs). - You can try out different HNSW index parameters (`M`, `EFCONSTRUCTION`, `EFRUNTIME`) to improve the “recall versus speed” balance. + You can try out different HNSW index parameters (`M`, `EFCONSTRUCTION`, `EFRUNTIME`) to improve the "recall versus speed" balance. - Use `FT.SEARCH` to retrieve the top K hashes with the most similar vectors to a given query vector. @@ -224,7 +224,7 @@ All VSS queries or any query using the `PARAMS` option must use Dialect version Use hybrid queries to retrieve Redis hashes that match a combination of vector and non-vector search criteria. Non-vector search criteria can include expressions combining `NUMERIC`, `TEXT`, `TAG`, and `GEO` fields. - Hybrid queries are often used in modern ecommerce search applications featuring “visual” similarity plus metadata similarity. + Hybrid queries are often used in modern ecommerce search applications featuring "visual" similarity plus metadata similarity. For example, you can use a single hybrid query to find products that are visually similar to a given image within a price range and/or geo-location. - Use [`FT.CONFIG SET`]({{< relref "commands/ft.config-set" >}}) to set `DEFAULT_DIALECT` at the module level. By default, `DEFAULT_DIALECT` is set to 1. diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redistimeseries/redistimeseries-1.6-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redistimeseries/redistimeseries-1.6-release-notes.md index 1207e43ec1..4f4dc91028 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redistimeseries/redistimeseries-1.6-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redistimeseries/redistimeseries-1.6-release-notes.md @@ -1,7 +1,7 @@ --- Title: RedisTimeSeries 1.6 release notes linkTitle: v1.6 (January 2022) -description: Added support for aggregating across multiple time series (multi-key). Can compute queries such as “the maximum observed value of a set of time series” server-side instead of client-side. +description: Added support for aggregating across multiple time series (multi-key). Can compute queries such as "the maximum observed value of a set of time series" server-side instead of client-side. min-version-db: "6.0.16" min-version-rs: "6.2.8" weight: 97 @@ -127,7 +127,7 @@ This is the General Availability release of RedisTimeSeries 1.6. ### Highlights -RedisTimeSeries 1.6 adds support for aggregating across multiple time series (multi-key). Before this version, queries such as “the maximum observed value of a set of time series” needed to be calculated client-side. Such queries can now be computed server-side, leveraging the heart of RedisGears ([LibMR](https://github.com/RedisGears/LibMR)) for clustered databases. +RedisTimeSeries 1.6 adds support for aggregating across multiple time series (multi-key). Before this version, queries such as "the maximum observed value of a set of time series" needed to be calculated client-side. Such queries can now be computed server-side, leveraging the heart of RedisGears ([LibMR](https://github.com/RedisGears/LibMR)) for clustered databases. ### What's new in 1.6 diff --git a/content/operate/oss_and_stack/stack-with-enterprise/timeseries/_index.md b/content/operate/oss_and_stack/stack-with-enterprise/timeseries/_index.md index b89667586c..09650725ef 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/timeseries/_index.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/timeseries/_index.md @@ -92,11 +92,11 @@ Redis streams allow you to add several field value pairs in a message for a give {{< image filename="/images/rs/TimeSeries-modeling1.png" >}} -For sorted sets, we modeled the data in two different ways. For “Sorted set per device”, we concatenated the metrics and separated them out by colons, e.g. `“::: … :”`. +For sorted sets, we modeled the data in two different ways. For "Sorted set per device", we concatenated the metrics and separated them out by colons, e.g. `"::: … :"`. {{< image filename="/images/rs/TimeSeries-modeling2.png" >}} -Of course, this consumes less memory but needs more CPU cycles to get the correct metric at read time. It also implies that changing the number of metrics per device isn’t straightforward, which is why we also benchmarked a second sorted set approach. In “Sorted set per metric,” we kept each metric in its own sorted set and had 10 sorted sets per device. We logged values in the format `“:”`. +Of course, this consumes less memory but needs more CPU cycles to get the correct metric at read time. It also implies that changing the number of metrics per device isn’t straightforward, which is why we also benchmarked a second sorted set approach. In "Sorted set per metric," we kept each metric in its own sorted set and had 10 sorted sets per device. We logged values in the format `":"`. {{< image filename="/images/rs/TimeSeries-modeling3.png" >}}