Skip to content

Commit d504232

Browse files
DOC-5743 BITOP examples
1 parent 113a18a commit d504232

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed

doctests/bitmap_tutorial_test.go

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,145 @@ func ExampleClient_bitcount() {
9494
// Output:
9595
// 1
9696
}
97+
98+
func ExampleClient_bitop_setup() {
99+
ctx := context.Background()
100+
101+
rdb := redis.NewClient(&redis.Options{
102+
Addr: "localhost:6379",
103+
Password: "", // no password docs
104+
DB: 0, // use default DB
105+
})
106+
107+
// REMOVE_START
108+
// start with fresh database
109+
rdb.FlushDB(ctx)
110+
rdb.Del(ctx, "A", "B", "C", "R")
111+
// REMOVE_END
112+
113+
// STEP_START bitop_setup
114+
rdb.SetBit(ctx, "A", 0, 1)
115+
rdb.SetBit(ctx, "A", 1, 1)
116+
rdb.SetBit(ctx, "A", 3, 1)
117+
rdb.SetBit(ctx, "A", 4, 1)
118+
ba, _ := rdb.Get(ctx, "A").Bytes()
119+
fmt.Printf("%08b\n", ba[0])
120+
// >>> 11011000
121+
122+
rdb.SetBit(ctx, "B", 3, 1)
123+
rdb.SetBit(ctx, "B", 4, 1)
124+
rdb.SetBit(ctx, "B", 7, 1)
125+
bb, _ := rdb.Get(ctx, "B").Bytes()
126+
fmt.Printf("%08b\n", bb[0])
127+
// >>> 00011001
128+
129+
rdb.SetBit(ctx, "C", 1, 1)
130+
rdb.SetBit(ctx, "C", 2, 1)
131+
rdb.SetBit(ctx, "C", 4, 1)
132+
rdb.SetBit(ctx, "C", 5, 1)
133+
bc, _ := rdb.Get(ctx, "C").Bytes()
134+
fmt.Printf("%08b\n", bc[0])
135+
// >>> 01101100
136+
// STEP_END
137+
138+
// Output:
139+
// 11011000
140+
// 00011001
141+
// 01101100
142+
}
143+
144+
func ExampleClient_bitop_ops() {
145+
ctx := context.Background()
146+
147+
rdb := redis.NewClient(&redis.Options{
148+
Addr: "localhost:6379",
149+
Password: "", // no password docs
150+
DB: 0, // use default DB
151+
})
152+
153+
// REMOVE_START
154+
// start with fresh database
155+
rdb.FlushDB(ctx)
156+
rdb.Del(ctx, "A", "B", "C", "R")
157+
// REMOVE_END
158+
159+
// HIDE_START
160+
rdb.SetBit(ctx, "A", 0, 1)
161+
rdb.SetBit(ctx, "A", 1, 1)
162+
rdb.SetBit(ctx, "A", 3, 1)
163+
rdb.SetBit(ctx, "A", 4, 1)
164+
rdb.SetBit(ctx, "B", 3, 1)
165+
rdb.SetBit(ctx, "B", 4, 1)
166+
rdb.SetBit(ctx, "B", 7, 1)
167+
rdb.SetBit(ctx, "C", 1, 1)
168+
rdb.SetBit(ctx, "C", 2, 1)
169+
rdb.SetBit(ctx, "C", 4, 1)
170+
rdb.SetBit(ctx, "C", 5, 1)
171+
// HIDE_END
172+
173+
// STEP_START bitop_and
174+
rdb.BitOpAnd(ctx, "R", "A", "B", "C")
175+
br, _ := rdb.Get(ctx, "R").Bytes()
176+
fmt.Printf("%08b\n", br[0])
177+
// >>> 00001000
178+
// STEP_END
179+
180+
// STEP_START bitop_or
181+
rdb.BitOpOr(ctx, "R", "A", "B", "C")
182+
br, _ = rdb.Get(ctx, "R").Bytes()
183+
fmt.Printf("%08b\n", br[0])
184+
// >>> 11111101
185+
// STEP_END
186+
187+
// STEP_START bitop_xor
188+
rdb.BitOpXor(ctx, "R", "A", "B")
189+
br, _ = rdb.Get(ctx, "R").Bytes()
190+
fmt.Printf("%08b\n", br[0])
191+
// >>> 11000001
192+
// STEP_END
193+
194+
// STEP_START bitop_not
195+
rdb.BitOpNot(ctx, "R", "A")
196+
br, _ = rdb.Get(ctx, "R").Bytes()
197+
fmt.Printf("%08b\n", br[0])
198+
// >>> 00100111
199+
// STEP_END
200+
201+
// STEP_START bitop_diff
202+
rdb.BitOpDiff(ctx, "R", "A", "B", "C")
203+
br, _ = rdb.Get(ctx, "R").Bytes()
204+
fmt.Printf("%08b\n", br[0])
205+
// >>> 10000000
206+
// STEP_END
207+
208+
// STEP_START bitop_diff1
209+
rdb.BitOpDiff1(ctx, "R", "A", "B", "C")
210+
br, _ = rdb.Get(ctx, "R").Bytes()
211+
fmt.Printf("%08b\n", br[0])
212+
// >>> 00100101
213+
// STEP_END
214+
215+
// STEP_START bitop_andor
216+
rdb.BitOpAndOr(ctx, "R", "A", "B", "C")
217+
br, _ = rdb.Get(ctx, "R").Bytes()
218+
fmt.Printf("%08b\n", br[0])
219+
// >>> 01011000
220+
// STEP_END
221+
222+
// STEP_START bitop_one
223+
rdb.BitOpOne(ctx, "R", "A", "B", "C")
224+
br, _ = rdb.Get(ctx, "R").Bytes()
225+
fmt.Printf("%08b\n", br[0])
226+
// >>> 10100101
227+
// STEP_END
228+
229+
// Output:
230+
// 00001000
231+
// 11111101
232+
// 11000001
233+
// 00100111
234+
// 10000000
235+
// 00100101
236+
// 01011000
237+
// 10100101
238+
}

0 commit comments

Comments
 (0)