From d504232b90796013946419a0d80e1b26efd8c9f9 Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Tue, 23 Sep 2025 16:15:17 +0100 Subject: [PATCH 1/3] DOC-5743 BITOP examples --- doctests/bitmap_tutorial_test.go | 142 +++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) diff --git a/doctests/bitmap_tutorial_test.go b/doctests/bitmap_tutorial_test.go index c622f4b887..9204698075 100644 --- a/doctests/bitmap_tutorial_test.go +++ b/doctests/bitmap_tutorial_test.go @@ -94,3 +94,145 @@ func ExampleClient_bitcount() { // Output: // 1 } + +func ExampleClient_bitop_setup() { + 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, "A", "B", "C", "R") + // REMOVE_END + + // STEP_START bitop_setup + rdb.SetBit(ctx, "A", 0, 1) + rdb.SetBit(ctx, "A", 1, 1) + rdb.SetBit(ctx, "A", 3, 1) + rdb.SetBit(ctx, "A", 4, 1) + ba, _ := rdb.Get(ctx, "A").Bytes() + fmt.Printf("%08b\n", ba[0]) + // >>> 11011000 + + rdb.SetBit(ctx, "B", 3, 1) + rdb.SetBit(ctx, "B", 4, 1) + rdb.SetBit(ctx, "B", 7, 1) + bb, _ := rdb.Get(ctx, "B").Bytes() + fmt.Printf("%08b\n", bb[0]) + // >>> 00011001 + + rdb.SetBit(ctx, "C", 1, 1) + rdb.SetBit(ctx, "C", 2, 1) + rdb.SetBit(ctx, "C", 4, 1) + rdb.SetBit(ctx, "C", 5, 1) + bc, _ := rdb.Get(ctx, "C").Bytes() + fmt.Printf("%08b\n", bc[0]) + // >>> 01101100 + // STEP_END + + // Output: + // 11011000 + // 00011001 + // 01101100 +} + +func ExampleClient_bitop_ops() { + 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, "A", "B", "C", "R") + // REMOVE_END + + // HIDE_START + rdb.SetBit(ctx, "A", 0, 1) + rdb.SetBit(ctx, "A", 1, 1) + rdb.SetBit(ctx, "A", 3, 1) + rdb.SetBit(ctx, "A", 4, 1) + rdb.SetBit(ctx, "B", 3, 1) + rdb.SetBit(ctx, "B", 4, 1) + rdb.SetBit(ctx, "B", 7, 1) + rdb.SetBit(ctx, "C", 1, 1) + rdb.SetBit(ctx, "C", 2, 1) + rdb.SetBit(ctx, "C", 4, 1) + rdb.SetBit(ctx, "C", 5, 1) + // HIDE_END + + // STEP_START bitop_and + rdb.BitOpAnd(ctx, "R", "A", "B", "C") + br, _ := rdb.Get(ctx, "R").Bytes() + fmt.Printf("%08b\n", br[0]) + // >>> 00001000 + // STEP_END + + // STEP_START bitop_or + rdb.BitOpOr(ctx, "R", "A", "B", "C") + br, _ = rdb.Get(ctx, "R").Bytes() + fmt.Printf("%08b\n", br[0]) + // >>> 11111101 + // STEP_END + + // STEP_START bitop_xor + rdb.BitOpXor(ctx, "R", "A", "B") + br, _ = rdb.Get(ctx, "R").Bytes() + fmt.Printf("%08b\n", br[0]) + // >>> 11000001 + // STEP_END + + // STEP_START bitop_not + rdb.BitOpNot(ctx, "R", "A") + br, _ = rdb.Get(ctx, "R").Bytes() + fmt.Printf("%08b\n", br[0]) + // >>> 00100111 + // STEP_END + + // STEP_START bitop_diff + rdb.BitOpDiff(ctx, "R", "A", "B", "C") + br, _ = rdb.Get(ctx, "R").Bytes() + fmt.Printf("%08b\n", br[0]) + // >>> 10000000 + // STEP_END + + // STEP_START bitop_diff1 + rdb.BitOpDiff1(ctx, "R", "A", "B", "C") + br, _ = rdb.Get(ctx, "R").Bytes() + fmt.Printf("%08b\n", br[0]) + // >>> 00100101 + // STEP_END + + // STEP_START bitop_andor + rdb.BitOpAndOr(ctx, "R", "A", "B", "C") + br, _ = rdb.Get(ctx, "R").Bytes() + fmt.Printf("%08b\n", br[0]) + // >>> 01011000 + // STEP_END + + // STEP_START bitop_one + rdb.BitOpOne(ctx, "R", "A", "B", "C") + br, _ = rdb.Get(ctx, "R").Bytes() + fmt.Printf("%08b\n", br[0]) + // >>> 10100101 + // STEP_END + + // Output: + // 00001000 + // 11111101 + // 11000001 + // 00100111 + // 10000000 + // 00100101 + // 01011000 + // 10100101 +} From 8333a8f946f5651071246b23db7d176433b4cc4d Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Tue, 23 Sep 2025 16:40:44 +0100 Subject: [PATCH 2/3] DOC-5743 combine examples into one function --- doctests/bitmap_tutorial_test.go | 40 ++++---------------------------- 1 file changed, 4 insertions(+), 36 deletions(-) diff --git a/doctests/bitmap_tutorial_test.go b/doctests/bitmap_tutorial_test.go index 9204698075..bc4576c34e 100644 --- a/doctests/bitmap_tutorial_test.go +++ b/doctests/bitmap_tutorial_test.go @@ -95,7 +95,7 @@ func ExampleClient_bitcount() { // 1 } -func ExampleClient_bitop_setup() { +func ExampleClient_bitops() { ctx := context.Background() rdb := redis.NewClient(&redis.Options{ @@ -135,41 +135,6 @@ func ExampleClient_bitop_setup() { // >>> 01101100 // STEP_END - // Output: - // 11011000 - // 00011001 - // 01101100 -} - -func ExampleClient_bitop_ops() { - 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, "A", "B", "C", "R") - // REMOVE_END - - // HIDE_START - rdb.SetBit(ctx, "A", 0, 1) - rdb.SetBit(ctx, "A", 1, 1) - rdb.SetBit(ctx, "A", 3, 1) - rdb.SetBit(ctx, "A", 4, 1) - rdb.SetBit(ctx, "B", 3, 1) - rdb.SetBit(ctx, "B", 4, 1) - rdb.SetBit(ctx, "B", 7, 1) - rdb.SetBit(ctx, "C", 1, 1) - rdb.SetBit(ctx, "C", 2, 1) - rdb.SetBit(ctx, "C", 4, 1) - rdb.SetBit(ctx, "C", 5, 1) - // HIDE_END - // STEP_START bitop_and rdb.BitOpAnd(ctx, "R", "A", "B", "C") br, _ := rdb.Get(ctx, "R").Bytes() @@ -227,6 +192,9 @@ func ExampleClient_bitop_ops() { // STEP_END // Output: + // 11011000 + // 00011001 + // 01101100 // 00001000 // 11111101 // 11000001 From a55dbe4e80e15c0689de49c07e25c799bc91f74b Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Wed, 24 Sep 2025 10:47:08 +0100 Subject: [PATCH 3/3] DOC-5743 try adding error checks to diagnose CI fails --- doctests/bitmap_tutorial_test.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/doctests/bitmap_tutorial_test.go b/doctests/bitmap_tutorial_test.go index bc4576c34e..a6884a1273 100644 --- a/doctests/bitmap_tutorial_test.go +++ b/doctests/bitmap_tutorial_test.go @@ -164,28 +164,40 @@ func ExampleClient_bitops() { // STEP_END // STEP_START bitop_diff - rdb.BitOpDiff(ctx, "R", "A", "B", "C") + _, err := rdb.BitOpDiff(ctx, "R", "A", "B", "C").Result() + if err != nil { + panic(err) + } br, _ = rdb.Get(ctx, "R").Bytes() fmt.Printf("%08b\n", br[0]) // >>> 10000000 // STEP_END // STEP_START bitop_diff1 - rdb.BitOpDiff1(ctx, "R", "A", "B", "C") + _, err = rdb.BitOpDiff1(ctx, "R", "A", "B", "C").Result() + if err != nil { + panic(err) + } br, _ = rdb.Get(ctx, "R").Bytes() fmt.Printf("%08b\n", br[0]) // >>> 00100101 // STEP_END // STEP_START bitop_andor - rdb.BitOpAndOr(ctx, "R", "A", "B", "C") + _, err = rdb.BitOpAndOr(ctx, "R", "A", "B", "C").Result() + if err != nil { + panic(err) + } br, _ = rdb.Get(ctx, "R").Bytes() fmt.Printf("%08b\n", br[0]) // >>> 01011000 // STEP_END // STEP_START bitop_one - rdb.BitOpOne(ctx, "R", "A", "B", "C") + _, err = rdb.BitOpOne(ctx, "R", "A", "B", "C").Result() + if err != nil { + panic(err) + } br, _ = rdb.Get(ctx, "R").Bytes() fmt.Printf("%08b\n", br[0]) // >>> 10100101