diff --git a/config.toml b/config.toml index 677aa69ebf..2f04aa7ace 100644 --- a/config.toml +++ b/config.toml @@ -2,6 +2,7 @@ baseURL = "https://redis.io" title = "Docs" +timeout="75" refLinksErrorLevel = "WARNING" enableRobotsTXT = true enableGitInfo = true diff --git a/local_examples/php/DtSortedSetsTest.php b/local_examples/php/DtSortedSetsTest.php index 68dfc08695..e7c596e90b 100644 --- a/local_examples/php/DtSortedSetsTest.php +++ b/local_examples/php/DtSortedSetsTest.php @@ -1,4 +1,5 @@ // EXAMPLE: ss_tutorial +// BINDER_ID php-dt-sorted-set >> True + //REMOVE_START + Assert.True(res1); + //REMOVE_END + + bool res2 = db.SortedSetAdd("racer_scores", "Castilla", 12); + Console.WriteLine(res2); // >>> True + //REMOVE_START + Assert.True(res2); + //REMOVE_END + + long res3 = db.SortedSetAdd("racer_scores", [ + new("Sam-Bodden", 8), + new("Royce", 10), + new("Ford", 6), + new("Prickett", 14), + new("Castilla", 12) + ]); + Console.WriteLine(res3); // >>> 4 + //REMOVE_START + Assert.Equal(4, res3); + //REMOVE_END + //STEP_END + + //STEP_START zrange + RedisValue[] res4 = db.SortedSetRangeByRank("racer_scores", 0, -1); + Console.WriteLine(string.Join(", ", res4)); // >>> Ford, Sam-Bodden, Norem, Royce, Castilla, Prickett + //REMOVE_START + Assert.Equal(6, res4.Length); + Assert.Equal("Ford, Sam-Bodden, Norem, Royce, Castilla, Prickett", string.Join(", ", res4)); + //REMOVE_END + + RedisValue[] res5 = db.SortedSetRangeByRank("racer_scores", 0, -1, Order.Descending); + Console.WriteLine(string.Join(", ", res5)); // >>> Prickett, Castilla, Royce, Norem, Sam-Bodden, Ford + //REMOVE_START + Assert.Equal(6, res5.Length); + Assert.Equal("Prickett, Castilla, Royce, Norem, Sam-Bodden, Ford", string.Join(", ", res5)); + //REMOVE_END + //STEP_END + + //STEP_START zrange_withscores + SortedSetEntry[] res6 = db.SortedSetRangeByRankWithScores("racer_scores", 0, -1); + Console.WriteLine(string.Join(", ", res6)); // >>> Ford: 6, Sam-Bodden: 8, Norem: 10, Royce: 10, Castilla: 12, Prickett: 14 + //REMOVE_START + Assert.Equal(6, res6.Length); + Assert.Equal("Ford: 6, Sam-Bodden: 8, Norem: 10, Royce: 10, Castilla: 12, Prickett: 14", string.Join(", ", res6)); + //REMOVE_END + //STEP_END + + //STEP_START zrangebyscore + RedisValue[] res7 = db.SortedSetRangeByScore("racer_scores", double.NegativeInfinity, 10); + Console.WriteLine(string.Join(", ", res7)); // >>> Ford, Sam-Bodden, Norem, Royce + //REMOVE_START + Assert.Equal(4, res7.Length); + Assert.Equal("Ford, Sam-Bodden, Norem, Royce", string.Join(", ", res7)); + //REMOVE_END + //STEP_END + + //STEP_START zremrangebyscore + bool res8 = db.SortedSetRemove("racer_scores", "Castilla"); + Console.WriteLine(res8); // >>> True + //REMOVE_START + Assert.True(res8); + //REMOVE_END + + long res9 = db.SortedSetRemoveRangeByScore("racer_scores", double.NegativeInfinity, 9); + Console.WriteLine(res9); // >>> 2 + //REMOVE_START + Assert.Equal(2, res9); + //REMOVE_END + + RedisValue[] res10 = db.SortedSetRangeByRank("racer_scores", 0, -1); + Console.WriteLine(string.Join(", ", res10)); // >>> Norem, Royce, Prickett + //REMOVE_START + Assert.Equal(3, res10.Length); + Assert.Equal("Norem, Royce, Prickett", string.Join(", ", res10)); + //REMOVE_END + //STEP_END + + //REMOVE_START + Assert.Equal(3, db.SortedSetLength("racer_scores")); + //REMOVE_END + + //STEP_START zrank + long? res11 = db.SortedSetRank("racer_scores", "Norem"); + Console.WriteLine(res11); // >>> 0 + //REMOVE_START + Assert.Equal(0, res11); + //REMOVE_END + + long? res12 = db.SortedSetRank("racer_scores", "Norem", Order.Descending); + Console.WriteLine(res12); // >>> 2 + //REMOVE_START + Assert.Equal(2, res12); + //REMOVE_END + //STEP_END + + //STEP_START zadd_lex + long res13 = db.SortedSetAdd("racer_scores", [ + new("Norem", 0), + new("Sam-Bodden", 0), + new("Royce", 0), + new("Ford", 0), + new("Prickett", 0), + new("Castilla", 0) + ]); + Console.WriteLine(res13); // >>> 3 + //REMOVE_START + Assert.Equal(3, res13); + //REMOVE_END + + RedisValue[] res14 = db.SortedSetRangeByRank("racer_scores", 0, -1); + Console.WriteLine(string.Join(", ", res14)); // >>> Castilla, Ford, Norem, Pricket, Royce, Sam-Bodden + //REMOVE_START + Assert.Equal(6, res14.Length); + Assert.Equal("Castilla, Ford, Norem, Prickett, Royce, Sam-Bodden", string.Join(", ", res14)); + //REMOVE_END + + RedisValue[] res15 = db.SortedSetRangeByValue("racer_scores", "A", "L", Exclude.None); + Console.WriteLine(string.Join(", ", res15)); // >>> Castilla, Ford + //REMOVE_START + Assert.Equal(2, res15.Length); + Assert.Equal("Castilla, Ford", string.Join(", ", res15)); + //REMOVE_END + //STEP_END + + //STEP_START leaderboard + bool res16 = db.SortedSetAdd("racer_scores", "Wood", 100); + Console.WriteLine(res16); // >>> True + //REMOVE_START + Assert.True(res16); + //REMOVE_END + + bool res17 = db.SortedSetAdd("racer_scores", "Henshaw", 100); + Console.WriteLine(res17); // >>> True + //REMOVE_START + Assert.True(res17); + //REMOVE_END + + bool res18 = db.SortedSetAdd("racer_scores", "Henshaw", 150); + Console.WriteLine(res18); // >>> False + //REMOVE_START + Assert.False(res18); + //REMOVE_END + + double res19 = db.SortedSetIncrement("racer_scores", "Wood", 50); + Console.WriteLine(res19); // >>> 150.0 + //REMOVE_START + Assert.Equal(150, res19); + //REMOVE_END + + double res20 = db.SortedSetIncrement("racer_scores", "Henshaw", 50); + Console.WriteLine(res20); // >>> 200.0 + //REMOVE_START + Assert.Equal(200, res20); + //REMOVE_END + //STEP_END + //HIDE_START + } +} +//HIDE_END diff --git a/local_examples/tmp/datatypes/sorted-sets/SortedSetsExample.java b/local_examples/tmp/datatypes/sorted-sets/SortedSetsExample.java new file mode 100644 index 0000000000..6d1b801933 --- /dev/null +++ b/local_examples/tmp/datatypes/sorted-sets/SortedSetsExample.java @@ -0,0 +1,128 @@ +//EXAMPLE: ss_tutorial +// BINDER_ID jedis-dt-sorted-set +//HIDE_START +package io.redis.examples; + +import redis.clients.jedis.UnifiedJedis; +import redis.clients.jedis.resps.Tuple; +//HIDE_END + +//REMOVE_START +import org.junit.jupiter.api.Test; +import java.util.HashMap; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +//REMOVE_END + +public class SortedSetsExample { + + @Test + public void run() { + //HIDE_START + UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379"); + //HIDE_END + + //REMOVE_START + jedis.del("racer_scores"); + //REMOVE_END + + //STEP_START zadd + long res1 = jedis.zadd("racer_scores", 10d, "Norem"); + System.out.println(res1); // >>> 1 + + long res2 = jedis.zadd("racer_scores", 12d, "Castilla"); + System.out.println(res2); // >>> 1 + + long res3 = jedis.zadd("racer_scores", new HashMap() {{ + put("Sam-Bodden", 8d); + put("Royce", 10d); + put("Ford", 6d); + put("Prickett", 14d); + put("Castilla", 12d); + }}); + System.out.println(res3); // >>> 4 + //STEP_END + + //STEP_START zrange + List res4 = jedis.zrange("racer_scores", 0, -1); + System.out.println(res4); // >>> [Ford, Sam-Bodden, Norem, Royce, Castil, Castilla, Prickett] + + List res5 = jedis.zrevrange("racer_scores", 0, -1); + System.out.println(res5); // >>> [Prickett, Castilla, Castil, Royce, Norem, Sam-Bodden, Ford] + //STEP_END + + //STEP_START zrange_withscores + List res6 = jedis.zrangeWithScores("racer_scores", 0, -1); + System.out.println(res6); // >>> [[Ford,6.0], [Sam-Bodden,8.0], [Norem,10.0], [Royce,10.0], [Castil,12.0], [Castilla,12.0], [Prickett,14.0]] + //STEP_END + + //STEP_START zrangebyscore + List res7 = jedis.zrangeByScore("racer_scores", Double.MIN_VALUE, 10d); + System.out.println(res7); // >>> [Ford, Sam-Bodden, Norem, Royce] + //STEP_END + + //STEP_START zremrangebyscore + long res8 = jedis.zrem("racer_scores", "Castilla"); + System.out.println(res8); // >>> 1 + + long res9 = jedis.zremrangeByScore("racer_scores", Double.MIN_VALUE, 9d); + System.out.println(res9); // >>> 2 + + List res10 = jedis.zrange("racer_scores", 0, -1); + System.out.println(res10); // >>> [Norem, Royce, Prickett] + //STEP_END + + //REMOVE_START + assertEquals(3, jedis.zcard("racer_scores")); + //REMOVE_END + + //STEP_START zrank + long res11 = jedis.zrank("racer_scores", "Norem"); + System.out.println(res11); // >>> 0 + + long res12 = jedis.zrevrank("racer_scores", "Norem"); + System.out.println(res12); // >>> 2 + //STEP_END + + //STEP_START zadd_lex + long res13 = jedis.zadd("racer_scores", new HashMap() {{ + put("Norem", 0d); + put("Sam-Bodden", 0d); + put("Royce", 0d); + put("Ford", 0d); + put("Prickett", 0d); + put("Castilla", 0d); + }}); + System.out.println(res13); // >>> 3 + + List res14 = jedis.zrange("racer_scores", 0, -1); + System.out.println(res14); // >>> [Castilla, Ford, Norem, Prickett, Royce, Sam-Bodden] + + List res15 = jedis.zrangeByLex("racer_scores", "[A", "[L"); + System.out.println(res15); // >>> [Castilla, Ford] + //STEP_END + + //STEP_START leaderboard + long res16 = jedis.zadd("racer_scores", 100d, "Wood"); + System.out.println(res16); // >>> 1 + + long res17 = jedis.zadd("racer_scores", 100d, "Henshaw"); + System.out.println(res17); // >>> 1 + + long res18 = jedis.zadd("racer_scores", 150d, "Henshaw"); + System.out.println(res18); // >>> 0 + + double res19 = jedis.zincrby("racer_scores", 50d, "Wood"); + System.out.println(res19); // >>> 150.0 + + double res20 = jedis.zincrby("racer_scores", 50d, "Henshaw"); + System.out.println(res20); // >>> 200.0 + //STEP_END + + //HIDE_START + jedis.close(); + //HIDE_END + } +} + diff --git a/local_examples/tmp/datatypes/sorted-sets/dt-ss.js b/local_examples/tmp/datatypes/sorted-sets/dt-ss.js new file mode 100644 index 0000000000..b3ed163bbd --- /dev/null +++ b/local_examples/tmp/datatypes/sorted-sets/dt-ss.js @@ -0,0 +1,163 @@ +// EXAMPLE: ss_tutorial +// BINDER_ID nodejs-dt-sorted-set +// HIDE_START +import assert from 'assert'; +import { createClient } from 'redis'; + +const client = createClient(); +await client.connect(); +// HIDE_END + +// REMOVE_START +await client.flushDb(); +// REMOVE_END + +// STEP_START zadd +const res1 = await client.zAdd('racer_scores', { score: 10, value: 'Norem' }); +console.log(res1); // >>> 1 + +const res2 = await client.zAdd('racer_scores', { score: 12, value: 'Castilla' }); +console.log(res2); // >>> 1 + +const res3 = await client.zAdd('racer_scores', [ + { score: 8, value: 'Sam-Bodden' }, + { score: 10, value: 'Royce' }, + { score: 6, value: 'Ford' }, + { score: 14, value: 'Prickett' }, + { score: 12, value: 'Castilla' } +]); +console.log(res3); // >>> 4 +// STEP_END + +// REMOVE_START +assert.equal(res1, 1) +assert.equal(res2, 1) +assert.equal(res3, 4) +// REMOVE_END + +// REMOVE_START +const count = await client.zCard('racer_scores'); +console.assert(count === 6); +// REMOVE_END + +// STEP_START zrange +const res4 = await client.zRange('racer_scores', 0, -1); +console.log(res4); // >>> ['Ford', 'Sam-Bodden', 'Norem', 'Royce', 'Castilla', 'Prickett'] +// STEP_END + +// REMOVE_START +assert.deepEqual(res4, ['Ford', 'Sam-Bodden', 'Norem', 'Royce', 'Castilla', 'Prickett']) +// REMOVE_END + +// STEP_START zrange_withscores +const res6 = await client.zRangeWithScores('racer_scores', 0, -1); +console.log(res6); +// >>> [ +// { value: 'Ford', score: 6 }, { value: 'Sam-Bodden', score: 8 }, +// { value: 'Norem', score: 10 }, { value: 'Royce', score: 10 }, +// { value: 'Castilla', score: 12 }, { value: 'Prickett', score: 14 } +// ] +// STEP_END + +// REMOVE_START +assert.deepEqual(res6, [ { value: 'Ford', score: 6 }, { value: 'Sam-Bodden', score: 8 }, { value: 'Norem', score: 10 }, { value: 'Royce', score: 10 }, { value: 'Castilla', score: 12 }, { value: 'Prickett', score: 14 } ] +) +// REMOVE_END + +// STEP_START zrangebyscore +const res7 = await client.zRangeByScore('racer_scores', '-inf', 10); +console.log(res7); // >>> ['Ford', 'Sam-Bodden', 'Norem', 'Royce'] +// STEP_END + +// REMOVE_START +assert.deepEqual(res7, ['Ford', 'Sam-Bodden', 'Norem', 'Royce']) +// REMOVE_END + +// STEP_START zremrangebyscore +const res8 = await client.zRem('racer_scores', 'Castilla'); +console.log(res8); // >>> 1 + +const res9 = await client.zRemRangeByScore('racer_scores', '-inf', 9); +console.log(res9); // >>> 2 + +// REMOVE_START +assert.equal(res8, 1) +assert.equal(res9, 2) +// REMOVE_END + +const res10 = await client.zRange('racer_scores', 0, -1); +console.log(res10); // >>> ['Norem', 'Royce', 'Prickett'] +// STEP_END + +// REMOVE_START +assert.deepEqual(res10, ['Norem', 'Royce', 'Prickett']) +// REMOVE_END + +// REMOVE_START +const count2 = await client.zCard('racer_scores'); +console.assert(count2 === 3); +// REMOVE_END + +// STEP_START zrank +const res11 = await client.zRank('racer_scores', 'Norem'); +console.log(res11); // >>> 0 + +const res12 = await client.zRevRank('racer_scores', 'Norem'); +console.log(res12); // >>> 2 +// STEP_END + +// STEP_START zadd_lex +const res13 = await client.zAdd('racer_scores', [ + { score: 0, value: 'Norem' }, + { score: 0, value: 'Sam-Bodden' }, + { score: 0, value: 'Royce' }, + { score: 0, value: 'Ford' }, + { score: 0, value: 'Prickett' }, + { score: 0, value: 'Castilla' } +]); +console.log(res13); // >>> 3 + +// REMOVE_START +assert.equal(count2, 3) +assert.equal(res11, 0) +assert.equal(res12, 2) +assert.equal(res13, 3) +// REMOVE_END + +const res14 = await client.zRange('racer_scores', 0, -1); +console.log(res14); // >>> ['Castilla', 'Ford', 'Norem', 'Prickett', 'Royce', 'Sam-Bodden'] + +const res15 = await client.zRangeByLex('racer_scores', '[A', '[L'); +console.log(res15); // >>> ['Castilla', 'Ford'] +// STEP_END + +// REMOVE_START +assert.deepEqual(res14, ['Castilla', 'Ford', 'Norem', 'Prickett', 'Royce', 'Sam-Bodden']) +assert.deepEqual(res15, ['Castilla', 'Ford']) +// REMOVE_END + +// STEP_START leaderboard +const res16 = await client.zAdd('racer_scores', { score: 100, value: 'Wood' }); +console.log(res16); // >>> 1 + +const res17 = await client.zAdd('racer_scores', { score: 100, value: 'Henshaw' }); +console.log(res17); // >>> 1 + +const res18 = await client.zAdd('racer_scores', { score: 150, value: 'Henshaw' }, { nx: true }); +console.log(res18); // >>> 0 + +const res19 = await client.zIncrBy('racer_scores', 50, 'Wood'); +console.log(res19); // >>> 150.0 + +const res20 = await client.zIncrBy('racer_scores', 50, 'Henshaw'); +console.log(res20); // >>> 200.0 +// STEP_END + +// REMOVE_START +assert.equal(res16, 1) +assert.equal(res17, 1) +assert.equal(res18, 0) +assert.equal(res19, 150.0) +assert.equal(res20, 200.0) +await client.close(); +// REMOVE_END diff --git a/local_examples/tmp/datatypes/sorted-sets/dt_ss.py b/local_examples/tmp/datatypes/sorted-sets/dt_ss.py new file mode 100644 index 0000000000..7392856bc3 --- /dev/null +++ b/local_examples/tmp/datatypes/sorted-sets/dt_ss.py @@ -0,0 +1,119 @@ +# EXAMPLE: ss_tutorial +# BINDER_ID python-dt-sorted-set +# HIDE_START +""" +Code samples for Sorted set doc pages: + https://redis.io/docs/latest/develop/data-types/sorted-sets/ +""" + +import redis + +r = redis.Redis(decode_responses=True) +# HIDE_END + +# REMOVE_START +r.delete("racer_scores") +# REMOVE_END + +# STEP_START zadd +res1 = r.zadd("racer_scores", {"Norem": 10}) +print(res1) # >>> 1 + +res2 = r.zadd("racer_scores", {"Castilla": 12}) +print(res2) # >>> 1 + +res3 = r.zadd( + "racer_scores", + {"Sam-Bodden": 8, "Royce": 10, "Ford": 6, "Prickett": 14, "Castilla": 12}, +) +print(res3) # >>> 4 +# STEP_END + +# REMOVE_START +assert r.zcard("racer_scores") == 6 +# REMOVE_END + +# STEP_START zrange +res4 = r.zrange("racer_scores", 0, -1) +print(res4) # >>> ['Ford', 'Sam-Bodden', 'Norem', 'Royce', 'Castilla', 'Prickett'] + +res5 = r.zrevrange("racer_scores", 0, -1) +print(res5) # >>> ['Prickett', 'Castilla', 'Royce', 'Norem', 'Sam-Bodden', 'Ford'] +# STEP_END + +# STEP_START zrange_withscores +res6 = r.zrange("racer_scores", 0, -1, withscores=True) +print( + res6 +) +# >>> [ +# ('Ford', 6.0), ('Sam-Bodden', 8.0), ('Norem', 10.0), ('Royce', 10.0), +# ('Castilla', 12.0), ('Prickett', 14.0) +# ] +# STEP_END + +# STEP_START zrangebyscore +res7 = r.zrangebyscore("racer_scores", "-inf", 10) +print(res7) # >>> ['Ford', 'Sam-Bodden', 'Norem', 'Royce'] +# STEP_END + +# STEP_START zremrangebyscore +res8 = r.zrem("racer_scores", "Castilla") +print(res8) # >>> 1 + +res9 = r.zremrangebyscore("racer_scores", "-inf", 9) +print(res9) # >>> 2 + +res10 = r.zrange("racer_scores", 0, -1) +print(res10) # >>> ['Norem', 'Royce', 'Prickett'] +# STEP_END + +# REMOVE_START +assert r.zcard("racer_scores") == 3 +# REMOVE_END + +# STEP_START zrank +res11 = r.zrank("racer_scores", "Norem") +print(res11) # >>> 0 + +res12 = r.zrevrank("racer_scores", "Norem") +print(res12) # >>> 2 +# STEP_END + +# STEP_START zadd_lex +res13 = r.zadd( + "racer_scores", + { + "Norem": 0, + "Sam-Bodden": 0, + "Royce": 0, + "Ford": 0, + "Prickett": 0, + "Castilla": 0, + }, +) +print(res13) # >>> 3 + +res14 = r.zrange("racer_scores", 0, -1) +print(res14) # >>> ['Castilla', 'Ford', 'Norem', 'Prickett', 'Royce', 'Sam-Bodden'] + +res15 = r.zrangebylex("racer_scores", "[A", "[L") +print(res15) # >>> ['Castilla', 'Ford'] +# STEP_END + +# STEP_START leaderboard +res16 = r.zadd("racer_scores", {"Wood": 100}) +print(res16) # >>> 1 + +res17 = r.zadd("racer_scores", {"Henshaw": 100}) +print(res17) # >>> 1 + +res18 = r.zadd("racer_scores", {"Henshaw": 150}) +print(res18) # >>> 0 + +res19 = r.zincrby("racer_scores", 50, "Wood") +print(res19) # >>> 150.0 + +res20 = r.zincrby("racer_scores", 50, "Henshaw") +print(res20) # >>> 200.0 +# STEP_END diff --git a/local_examples/tmp/datatypes/sorted-sets/ss_tutorial_test.go b/local_examples/tmp/datatypes/sorted-sets/ss_tutorial_test.go new file mode 100644 index 0000000000..f692e597ac --- /dev/null +++ b/local_examples/tmp/datatypes/sorted-sets/ss_tutorial_test.go @@ -0,0 +1,454 @@ +// EXAMPLE: ss_tutorial +// BINDER_ID go-dt-sorted-set +// HIDE_START +package example_commands_test + +import ( + "context" + "fmt" + + "github.com/redis/go-redis/v9" +) + +// HIDE_END +func ExampleClient_zadd() { + ctx := context.Background() + + rdb := redis.NewClient(&redis.Options{ + Addr: "localhost:6379", + Password: "", // no password docs + DB: 0, // use default DB + }) + + // REMOVE_START + // start with fresh database + rdb.FlushDB(ctx) + rdb.Del(ctx, "racer_scores") + // REMOVE_END + + // STEP_START zadd + res1, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Norem", Score: 10}, + ).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res1) // >>> 1 + + res2, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Castilla", Score: 12}, + ).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res2) // >>> 1 + + res3, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Norem", Score: 10}, + redis.Z{Member: "Sam-Bodden", Score: 8}, + redis.Z{Member: "Royce", Score: 10}, + redis.Z{Member: "Ford", Score: 6}, + redis.Z{Member: "Prickett", Score: 14}, + redis.Z{Member: "Castilla", Score: 12}, + ).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res3) // >>> 4 + // STEP_END + + // Output: + // 1 + // 1 + // 4 +} + +func ExampleClient_zrange() { + ctx := context.Background() + + rdb := redis.NewClient(&redis.Options{ + Addr: "localhost:6379", + Password: "", // no password docs + DB: 0, // use default DB + }) + + // REMOVE_START + // start with fresh database + rdb.FlushDB(ctx) + rdb.Del(ctx, "racer_scores") + // REMOVE_END + + _, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Norem", Score: 10}, + redis.Z{Member: "Sam-Bodden", Score: 8}, + redis.Z{Member: "Royce", Score: 10}, + redis.Z{Member: "Ford", Score: 6}, + redis.Z{Member: "Prickett", Score: 14}, + redis.Z{Member: "Castilla", Score: 12}, + ).Result() + + if err != nil { + panic(err) + } + + // STEP_START zrange + res4, err := rdb.ZRange(ctx, "racer_scores", 0, -1).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res4) + // >>> [Ford Sam-Bodden Norem Royce Castilla Prickett] + + res5, err := rdb.ZRevRange(ctx, "racer_scores", 0, -1).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res5) + // >>> [Prickett Castilla Royce Norem Sam-Bodden Ford] + // STEP_END + + // Output: + // [Ford Sam-Bodden Norem Royce Castilla Prickett] + // [Prickett Castilla Royce Norem Sam-Bodden Ford] +} + +func ExampleClient_zrangewithscores() { + ctx := context.Background() + + rdb := redis.NewClient(&redis.Options{ + Addr: "localhost:6379", + Password: "", // no password docs + DB: 0, // use default DB + }) + + // REMOVE_START + // start with fresh database + rdb.FlushDB(ctx) + rdb.Del(ctx, "racer_scores") + // REMOVE_END + + _, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Norem", Score: 10}, + redis.Z{Member: "Sam-Bodden", Score: 8}, + redis.Z{Member: "Royce", Score: 10}, + redis.Z{Member: "Ford", Score: 6}, + redis.Z{Member: "Prickett", Score: 14}, + redis.Z{Member: "Castilla", Score: 12}, + ).Result() + + if err != nil { + panic(err) + } + + // STEP_START zrange_withscores + res6, err := rdb.ZRangeWithScores(ctx, "racer_scores", 0, -1).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res6) + // >>> [{6 Ford} {8 Sam-Bodden} {10 Norem} {10 Royce} {12 Castilla} {14 Prickett}] + // STEP_END + + // Output: + // [{6 Ford} {8 Sam-Bodden} {10 Norem} {10 Royce} {12 Castilla} {14 Prickett}] +} + +func ExampleClient_zrangebyscore() { + ctx := context.Background() + + rdb := redis.NewClient(&redis.Options{ + Addr: "localhost:6379", + Password: "", // no password docs + DB: 0, // use default DB + }) + + // REMOVE_START + // start with fresh database + rdb.FlushDB(ctx) + rdb.Del(ctx, "racer_scores") + // REMOVE_END + + _, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Norem", Score: 10}, + redis.Z{Member: "Sam-Bodden", Score: 8}, + redis.Z{Member: "Royce", Score: 10}, + redis.Z{Member: "Ford", Score: 6}, + redis.Z{Member: "Prickett", Score: 14}, + redis.Z{Member: "Castilla", Score: 12}, + ).Result() + + if err != nil { + panic(err) + } + + // STEP_START zrangebyscore + res7, err := rdb.ZRangeByScore(ctx, "racer_scores", + &redis.ZRangeBy{Min: "-inf", Max: "10"}, + ).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res7) + // >>> [Ford Sam-Bodden Norem Royce] + // STEP_END + + // Output: + // [Ford Sam-Bodden Norem Royce] +} + +func ExampleClient_zremrangebyscore() { + ctx := context.Background() + + rdb := redis.NewClient(&redis.Options{ + Addr: "localhost:6379", + Password: "", // no password docs + DB: 0, // use default DB + }) + + // REMOVE_START + // start with fresh database + rdb.FlushDB(ctx) + rdb.Del(ctx, "racer_scores") + // REMOVE_END + + _, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Norem", Score: 10}, + redis.Z{Member: "Sam-Bodden", Score: 8}, + redis.Z{Member: "Royce", Score: 10}, + redis.Z{Member: "Ford", Score: 6}, + redis.Z{Member: "Prickett", Score: 14}, + redis.Z{Member: "Castilla", Score: 12}, + ).Result() + + if err != nil { + panic(err) + } + + // STEP_START zremrangebyscore + res8, err := rdb.ZRem(ctx, "racer_scores", "Castilla").Result() + + if err != nil { + panic(err) + } + + fmt.Println(res8) // >>> 1 + + res9, err := rdb.ZRemRangeByScore(ctx, "racer_scores", "-inf", "9").Result() + + if err != nil { + panic(err) + } + + fmt.Println(res9) // >>> 2 + + res10, err := rdb.ZRange(ctx, "racer_scores", 0, -1).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res10) + // >>> [Norem Royce Prickett] + // STEP_END + + // Output: + // 1 + // 2 + // [Norem Royce Prickett] +} + +func ExampleClient_zrank() { + ctx := context.Background() + + rdb := redis.NewClient(&redis.Options{ + Addr: "localhost:6379", + Password: "", // no password docs + DB: 0, // use default DB + }) + + // REMOVE_START + // start with fresh database + rdb.FlushDB(ctx) + rdb.Del(ctx, "racer_scores") + // REMOVE_END + + _, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Norem", Score: 10}, + redis.Z{Member: "Royce", Score: 10}, + redis.Z{Member: "Prickett", Score: 14}, + ).Result() + + if err != nil { + panic(err) + } + + // STEP_START zrank + res11, err := rdb.ZRank(ctx, "racer_scores", "Norem").Result() + + if err != nil { + panic(err) + } + + fmt.Println(res11) // >>> 0 + + res12, err := rdb.ZRevRank(ctx, "racer_scores", "Norem").Result() + + if err != nil { + panic(err) + } + + fmt.Println(res12) // >>> 2 + // STEP_END + + // Output: + // 0 + // 2 +} + +func ExampleClient_zaddlex() { + ctx := context.Background() + + rdb := redis.NewClient(&redis.Options{ + Addr: "localhost:6379", + Password: "", // no password docs + DB: 0, // use default DB + }) + + // REMOVE_START + // start with fresh database + rdb.FlushDB(ctx) + rdb.Del(ctx, "racer_scores") + // REMOVE_END + + _, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Norem", Score: 0}, + redis.Z{Member: "Royce", Score: 0}, + redis.Z{Member: "Prickett", Score: 0}, + ).Result() + + // STEP_START zadd_lex + res13, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Norem", Score: 0}, + redis.Z{Member: "Sam-Bodden", Score: 0}, + redis.Z{Member: "Royce", Score: 0}, + redis.Z{Member: "Ford", Score: 0}, + redis.Z{Member: "Prickett", Score: 0}, + redis.Z{Member: "Castilla", Score: 0}, + ).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res13) // >>> 3 + + res14, err := rdb.ZRange(ctx, "racer_scores", 0, -1).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res14) + // >>> [Castilla Ford Norem Prickett Royce Sam-Bodden] + + res15, err := rdb.ZRangeByLex(ctx, "racer_scores", &redis.ZRangeBy{ + Min: "[A", Max: "[L", + }).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res15) // >>> [Castilla Ford] + // STEP_END + + // Output: + // 3 + // [Castilla Ford Norem Prickett Royce Sam-Bodden] + // [Castilla Ford] +} + +func ExampleClient_leaderboard() { + ctx := context.Background() + + rdb := redis.NewClient(&redis.Options{ + Addr: "localhost:6379", + Password: "", // no password docs + DB: 0, // use default DB + }) + + // REMOVE_START + // start with fresh database + rdb.FlushDB(ctx) + rdb.Del(ctx, "racer_scores") + // REMOVE_END + + // STEP_START leaderboard + res16, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Wood", Score: 100}, + ).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res16) // >>> 1 + + res17, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Henshaw", Score: 100}, + ).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res17) // >>> 1 + + res18, err := rdb.ZAdd(ctx, "racer_scores", + redis.Z{Member: "Henshaw", Score: 150}, + ).Result() + + if err != nil { + panic(err) + } + + fmt.Println(res18) // >>> 0 + + res19, err := rdb.ZIncrBy(ctx, "racer_scores", 50, "Wood").Result() + + if err != nil { + panic(err) + } + + fmt.Println(res19) // >>> 150 + + res20, err := rdb.ZIncrBy(ctx, "racer_scores", 50, "Henshaw").Result() + + if err != nil { + panic(err) + } + + fmt.Println(res20) // >>> 200 + // STEP_END + + // Output: + // 1 + // 1 + // 0 + // 150 + // 200 +}