@@ -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