1
1
// EXAMPLE: bitmap_tutorial
2
- // HIDE_START
2
+ // REMOVE_START
3
3
import assert from 'assert' ;
4
- import { createClient } from 'redis' ;
4
+ // REMOVE_END
5
+ import { createClient , RESP_TYPES } from 'redis' ;
5
6
6
- const client = createClient ( ) ;
7
+ const client = createClient ( {
8
+ commandOptions : {
9
+ typeMapping : {
10
+ [ RESP_TYPES . BLOB_STRING ] : Buffer
11
+ }
12
+ }
13
+ } ) ;
7
14
await client . connect ( ) ;
8
- // HIDE_END
9
15
10
16
// REMOVE_START
11
17
await client . flushDb ( ) ;
@@ -35,5 +41,119 @@ console.log(res4) // >>> 1
35
41
// STEP_END
36
42
// REMOVE_START
37
43
assert . equal ( res4 , 1 )
44
+ // REMOVE_END
45
+
46
+ // STEP_START bitop_setup
47
+ await client . setBit ( "A" , 0 , 1 )
48
+ await client . setBit ( "A" , 1 , 1 )
49
+ await client . setBit ( "A" , 3 , 1 )
50
+ await client . setBit ( "A" , 4 , 1 )
51
+
52
+ const res5 = await client . get ( "A" )
53
+ console . log ( res5 . readUInt8 ( 0 ) . toString ( 2 ) . padStart ( 8 , '0' ) )
54
+ // >>> 11011000
55
+
56
+ await client . setBit ( "B" , 3 , 1 )
57
+ await client . setBit ( "B" , 4 , 1 )
58
+ await client . setBit ( "B" , 7 , 1 )
59
+
60
+ const res6 = await client . get ( "B" )
61
+ console . log ( res6 . readUInt8 ( 0 ) . toString ( 2 ) . padStart ( 8 , '0' ) )
62
+ // >>> 00011001
63
+
64
+ await client . setBit ( "C" , 1 , 1 )
65
+ await client . setBit ( "C" , 2 , 1 )
66
+ await client . setBit ( "C" , 4 , 1 )
67
+ await client . setBit ( "C" , 5 , 1 )
68
+
69
+ const res7 = await client . get ( "C" )
70
+ console . log ( res7 . readUInt8 ( 0 ) . toString ( 2 ) . padStart ( 8 , '0' ) )
71
+ // >>> 01101100
72
+ // STEP_END
73
+ // REMOVE_START
74
+ assert . equal ( res5 . readUInt8 ( 0 ) , 0b11011000 )
75
+ assert . equal ( res6 . readUInt8 ( 0 ) , 0b00011001 )
76
+ assert . equal ( res7 . readUInt8 ( 0 ) , 0b01101100 )
77
+ // REMOVE_END
78
+
79
+ // STEP_START bitop_and
80
+ await client . bitOp ( "AND" , "R" , [ "A" , "B" , "C" ] )
81
+ const res8 = await client . get ( "R" )
82
+ console . log ( res8 . readUInt8 ( 0 ) . toString ( 2 ) . padStart ( 8 , '0' ) )
83
+ // >>> 00001000
84
+ // STEP_END
85
+ // REMOVE_START
86
+ assert . equal ( res8 . readUInt8 ( 0 ) , 0b00001000 )
87
+ // REMOVE_END
88
+
89
+ // STEP_START bitop_or
90
+ await client . bitOp ( "OR" , "R" , [ "A" , "B" , "C" ] )
91
+ const res9 = await client . get ( "R" )
92
+ console . log ( res9 . readUInt8 ( 0 ) . toString ( 2 ) . padStart ( 8 , '0' ) )
93
+ // >>> 11111101
94
+ // STEP_END
95
+ // REMOVE_START
96
+ assert . equal ( res9 . readUInt8 ( 0 ) , 0b11111101 )
97
+ // REMOVE_END
98
+
99
+ // STEP_START bitop_xor
100
+ await client . bitOp ( "XOR" , "R" , [ "A" , "B" ] ) // XOR uses two keys here
101
+ const res10 = await client . get ( "R" )
102
+ console . log ( res10 . readUInt8 ( 0 ) . toString ( 2 ) . padStart ( 8 , '0' ) )
103
+ // >>> 11000001
104
+ // STEP_END
105
+ // REMOVE_START
106
+ assert . equal ( res10 . readUInt8 ( 0 ) , 0b11000001 )
107
+ // REMOVE_END
108
+
109
+ // STEP_START bitop_not
110
+ await client . bitOp ( "NOT" , "R" , "A" )
111
+ const res11 = await client . get ( "R" )
112
+ console . log ( res11 . readUInt8 ( 0 ) . toString ( 2 ) . padStart ( 8 , '0' ) )
113
+ // >>> 00100111
114
+ // STEP_END
115
+ // REMOVE_START
116
+ assert . equal ( res11 . readUInt8 ( 0 ) , 0b00100111 )
117
+ // REMOVE_END
118
+
119
+ // STEP_START bitop_diff
120
+ await client . bitOp ( "DIFF" , "R" , [ "A" , "B" , "C" ] )
121
+ const res12 = await client . get ( "R" )
122
+ console . log ( res12 . readUInt8 ( 0 ) . toString ( 2 ) . padStart ( 8 , '0' ) )
123
+ // >>> 10000000
124
+ // STEP_END
125
+ // REMOVE_START
126
+ assert . equal ( res12 . readUInt8 ( 0 ) , 0b10000000 )
127
+ // REMOVE_END
128
+
129
+ // STEP_START bitop_diff1
130
+ await client . bitOp ( "DIFF1" , "R" , [ "A" , "B" , "C" ] )
131
+ const res13 = await client . get ( "R" )
132
+ console . log ( res13 . readUInt8 ( 0 ) . toString ( 2 ) . padStart ( 8 , '0' ) )
133
+ // >>> 00100101
134
+ // STEP_END
135
+ // REMOVE_START
136
+ assert . equal ( res13 . readUInt8 ( 0 ) , 0b00100101 )
137
+ // REMOVE_END
138
+
139
+ // STEP_START bitop_andor
140
+ await client . bitOp ( "ANDOR" , "R" , [ "A" , "B" , "C" ] )
141
+ const res14 = await client . get ( "R" )
142
+ console . log ( res14 . readUInt8 ( 0 ) . toString ( 2 ) . padStart ( 8 , '0' ) )
143
+ // >>> 01011000
144
+ // STEP_END
145
+ // REMOVE_START
146
+ assert . equal ( res14 . readUInt8 ( 0 ) , 0b01011000 )
147
+ // REMOVE_END
148
+
149
+ // STEP_START bitop_one
150
+ await client . bitOp ( "ONE" , "R" , [ "A" , "B" , "C" ] )
151
+ const res15 = await client . get ( "R" )
152
+ console . log ( res15 . readUInt8 ( 0 ) . toString ( 2 ) . padStart ( 8 , '0' ) )
153
+ // >>> 10100101
154
+ // STEP_END
155
+ // REMOVE_START
156
+ assert . equal ( res15 . readUInt8 ( 0 ) , 0b10100101 )
157
+
38
158
await client . close ( ) ;
39
159
// REMOVE_END
0 commit comments