diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-01-04 07:19:32 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-01-04 07:19:32 +0000 |
commit | 7480e618ec785ba8a1c74c8a150cffe5880fb3bb (patch) | |
tree | 87422376dd9a7eee55850f0fce9a8bb4c13e44a2 /iredis/data/commands/zrangebyscore.md | |
parent | Adding upstream version 1.12.1. (diff) | |
download | iredis-7480e618ec785ba8a1c74c8a150cffe5880fb3bb.tar.xz iredis-7480e618ec785ba8a1c74c8a150cffe5880fb3bb.zip |
Adding upstream version 1.13.0.upstream/1.13.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'iredis/data/commands/zrangebyscore.md')
-rw-r--r-- | iredis/data/commands/zrangebyscore.md | 57 |
1 files changed, 28 insertions, 29 deletions
diff --git a/iredis/data/commands/zrangebyscore.md b/iredis/data/commands/zrangebyscore.md index e102eed..bc81708 100644 --- a/iredis/data/commands/zrangebyscore.md +++ b/iredis/data/commands/zrangebyscore.md @@ -1,23 +1,21 @@ Returns all the elements in the sorted set at `key` with a score between `min` -and `max` (including elements with score equal to `min` or `max`). The elements -are considered to be ordered from low to high scores. +and `max` (including elements with score equal to `min` or `max`). +The elements are considered to be ordered from low to high scores. The elements having the same score are returned in lexicographical order (this follows from a property of the sorted set implementation in Redis and does not involve further computation). -As per Redis 6.2.0, this command is considered deprecated. Please prefer using -the `ZRANGE` command with the `BYSCORE` argument in new code. - The optional `LIMIT` argument can be used to only get a range of the matching elements (similar to _SELECT LIMIT offset, count_ in SQL). A negative `count` -returns all elements from the `offset`. Keep in mind that if `offset` is large, -the sorted set needs to be traversed for `offset` elements before getting to the -elements to return, which can add up to O(N) time complexity. +returns all elements from the `offset`. +Keep in mind that if `offset` is large, the sorted set needs to be traversed for +`offset` elements before getting to the elements to return, which can add up to +O(N) time complexity. The optional `WITHSCORES` argument makes the command return both the element and -its score, instead of the element alone. This option is available since Redis -2.0. +its score, instead of the element alone. +This option is available since Redis 2.0. ## Exclusive intervals and infinity @@ -25,9 +23,10 @@ its score, instead of the element alone. This option is available since Redis the highest or lowest score in the sorted set to get all elements from or up to a certain score. -By default, the interval specified by `min` and `max` is closed (inclusive). It -is possible to specify an open interval (exclusive) by prefixing the score with -the character `(`. For example: +By default, the interval specified by `min` and `max` is closed (inclusive). +It is possible to specify an open interval (exclusive) by prefixing the score +with the character `(`. +For example: ``` ZRANGEBYSCORE zset (1 5 @@ -43,8 +42,8 @@ Will return all the elements with `5 < score < 10` (5 and 10 excluded). @return -@array-reply: list of elements in the specified score range (optionally with -their scores). +@array-reply: list of elements in the specified score range (optionally +with their scores). @examples @@ -60,18 +59,18 @@ ZRANGEBYSCORE myzset (1 (2 ## Pattern: weighted random selection of an element -Normally `ZRANGEBYSCORE` is simply used in order to get range of items where the -score is the indexed integer key, however it is possible to do less obvious -things with the command. +Normally `ZRANGEBYSCORE` is simply used in order to get range of items +where the score is the indexed integer key, however it is possible to do less +obvious things with the command. -For example a common problem when implementing Markov chains and other -algorithms is to select an element at random from a set, but different elements -may have different weights that change how likely it is they are picked. +For example a common problem when implementing Markov chains and other algorithms +is to select an element at random from a set, but different elements may have +different weights that change how likely it is they are picked. This is how we use this command in order to mount such an algorithm: -Imagine you have elements A, B and C with weights 1, 2 and 3. You compute the -sum of the weights, which is 1+2+3 = 6 +Imagine you have elements A, B and C with weights 1, 2 and 3. +You compute the sum of the weights, which is 1+2+3 = 6 At this point you add all the elements into a sorted set using this algorithm: @@ -92,12 +91,12 @@ B to score .5 C to score 1 ``` -Since this involves approximations, in order to avoid C is set to, like, 0.998 -instead of 1, we just modify the above algorithm to make sure the last score is -1 (left as an exercise for the reader...). +Since this involves approximations, in order to avoid C is set to, +like, 0.998 instead of 1, we just modify the above algorithm to make sure +the last score is 1 (left as an exercise for the reader...). -At this point, each time you want to get a weighted random element, just compute -a random number between 0 and 1 (which is like calling `rand()` in most -languages), so you can just do: +At this point, each time you want to get a weighted random element, +just compute a random number between 0 and 1 (which is like calling +`rand()` in most languages), so you can just do: RANDOM_ELE = ZRANGEBYSCORE key RAND() +inf LIMIT 0 1 |