22
22
cpus = flag .Int ("cpu" , runtime .GOMAXPROCS (- 1 ), "max cpus count to run (default logical cpu cores)" )
23
23
d = flag .Int ("d" , 16 , "data size of SET/GET/... value in bytes" )
24
24
r = flag .Int ("r" , 10000 , "use random keys for SET/GET" )
25
+ f = flag .Int ("f" , 100 , "Use random fields for SADD/HSET/... (default 100)" )
25
26
n = flag .Int ("n" , 1000000 , "total number of requests" )
26
27
t = flag .String ("t" , "set" , "Only run the comma separated list of tests." )
27
28
pipeline = flag .Int ("P" , 1 , "pipeline <numreq> requests. (default 1 no pipeline)." )
@@ -60,11 +61,17 @@ func main() {
60
61
}
61
62
}
62
63
64
+ func keyN (n int ) string {
65
+ return fmt .Sprintf ("%0" + strconv .Itoa (n )+ "d" , rand .Intn (* r ))
66
+ }
63
67
func key () string {
64
- return fmt .Sprintf ("mystring:%012d" , rand .Intn (* r ))
68
+ return fmt .Sprintf ("%d" , rand .Intn (* r ))
69
+ }
70
+ func keyField () string {
71
+ return fmt .Sprintf ("%d" , rand .Intn (* f ))
65
72
}
66
- func numkey ( ) string {
67
- return fmt .Sprintf ("mynum:%012d" , rand .Intn (* r ))
73
+ func keyFieldN ( n int ) string {
74
+ return fmt .Sprintf ("%0" + strconv . Itoa ( n ) + "d" , rand .Intn (* f ))
68
75
}
69
76
70
77
var value = strings .Repeat ("A" , * d )
@@ -79,37 +86,132 @@ var benches = map[string]benchFunc{
79
86
},
80
87
"set" : func (name string , addr string , opts * redbench.Options ) {
81
88
redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
82
- return redbench .AppendCommand (buf , "SET" , key ( ), value )
89
+ return redbench .AppendCommand (buf , "SET" , "mystring:" + keyN ( 12 ), value )
83
90
})
84
91
},
85
92
"get" : func (name string , addr string , opts * redbench.Options ) {
86
93
redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
87
- return redbench .AppendCommand (buf , "GET" , key ( ))
94
+ return redbench .AppendCommand (buf , "GET" , "mystring:" + keyN ( 12 ))
88
95
})
89
96
},
90
97
"getset" : func (name string , addr string , opts * redbench.Options ) {
91
98
redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
92
- return redbench .AppendCommand (buf , "GETSET" , key ( ), value )
99
+ return redbench .AppendCommand (buf , "GETSET" , "mystring:" + keyN ( 12 ), value )
93
100
})
94
101
},
95
102
"mset" : func (name string , addr string , opts * redbench.Options ) {
96
103
redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
97
- return redbench .AppendCommand (buf , "MSET" , key ( ), value , key ( ), value , key ( ), value )
104
+ return redbench .AppendCommand (buf , "MSET" , "mystring:" + keyN ( 12 ), value , "mystring:" + keyN ( 12 ), value , "mystring:" + keyN ( 12 ), value )
98
105
})
99
106
},
100
107
"mget" : func (name string , addr string , opts * redbench.Options ) {
101
108
redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
102
- return redbench .AppendCommand (buf , "MGET" , key ( ), key ( ), key ( ))
109
+ return redbench .AppendCommand (buf , "MGET" , "mystring:" + keyN ( 12 ), "mystring:" + keyN ( 12 ), "mystring:" + keyN ( 12 ))
103
110
})
104
111
},
105
112
"incr" : func (name string , addr string , opts * redbench.Options ) {
106
113
redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
107
- return redbench .AppendCommand (buf , "INCR" , numkey ( ))
114
+ return redbench .AppendCommand (buf , "INCR" , "mynum:" + keyN ( 12 ))
108
115
})
109
116
},
110
117
"decr" : func (name string , addr string , opts * redbench.Options ) {
111
118
redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
112
- return redbench .AppendCommand (buf , "DECR" , numkey ())
119
+ return redbench .AppendCommand (buf , "DECR" , "mynum:" + keyN (12 ))
120
+ })
121
+ },
122
+ "hset" : func (name string , addr string , opts * redbench.Options ) {
123
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
124
+ return redbench .AppendCommand (buf , "HSET" , "myhash:" + keyN (12 ), "field:" + keyFieldN (14 ), value )
125
+ })
126
+ },
127
+ "hget" : func (name string , addr string , opts * redbench.Options ) {
128
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
129
+ return redbench .AppendCommand (buf , "HGET" , "myhash:" + keyN (12 ), "field:" + keyFieldN (14 ))
130
+ })
131
+ },
132
+ "hdel" : func (name string , addr string , opts * redbench.Options ) {
133
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
134
+ return redbench .AppendCommand (buf , "HDEL" , "myhash:" + keyN (12 ), "field:" + keyFieldN (14 ))
135
+ })
136
+ },
137
+ "hmset" : func (name string , addr string , opts * redbench.Options ) {
138
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
139
+ return redbench .AppendCommand (buf , "HMSET" , "myhash:" + keyN (12 ), "field:" + keyFieldN (14 ), value , "field:" + keyFieldN (14 ), value , "field:" + keyFieldN (14 ), value )
140
+ })
141
+ },
142
+ "hmget" : func (name string , addr string , opts * redbench.Options ) {
143
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
144
+ return redbench .AppendCommand (buf , "HMGET" , "myhash:" + keyN (12 ), "field:" + keyFieldN (14 ), "field:" + keyFieldN (14 ), "field:" + keyFieldN (14 ))
145
+ })
146
+ },
147
+ "hkeys" : func (name string , addr string , opts * redbench.Options ) {
148
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
149
+ return redbench .AppendCommand (buf , "HKEYS" , "myhash:" + keyN (12 ))
150
+ })
151
+ },
152
+ "hvals" : func (name string , addr string , opts * redbench.Options ) {
153
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
154
+ return redbench .AppendCommand (buf , "HVALS" , "myhash:" + keyN (12 ))
155
+ })
156
+ },
157
+ "hgetall" : func (name string , addr string , opts * redbench.Options ) {
158
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
159
+ return redbench .AppendCommand (buf , "HGETALL" , "myhash:" + keyN (12 ))
160
+ })
161
+ },
162
+ "lpush" : func (name string , addr string , opts * redbench.Options ) {
163
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
164
+ return redbench .AppendCommand (buf , "LPUSH" , "mylist:" + keyN (12 ), value )
165
+ })
166
+ },
167
+ "lpop" : func (name string , addr string , opts * redbench.Options ) {
168
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
169
+ return redbench .AppendCommand (buf , "LPOP" , "mylist:" + keyN (12 ))
170
+ })
171
+ },
172
+ "rpush" : func (name string , addr string , opts * redbench.Options ) {
173
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
174
+ return redbench .AppendCommand (buf , "RPUSH" , "mylist:" + keyN (12 ), value )
175
+ })
176
+ },
177
+ "rpop" : func (name string , addr string , opts * redbench.Options ) {
178
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
179
+ return redbench .AppendCommand (buf , "RPOP" , "mylist:" + keyN (12 ))
180
+ })
181
+ },
182
+ "lrange" : func (name string , addr string , opts * redbench.Options ) {
183
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
184
+ return redbench .AppendCommand (buf , "LRANGE" , "mylist:" + keyN (12 ), "0" , "1000" )
185
+ })
186
+ },
187
+ "sadd" : func (name string , addr string , opts * redbench.Options ) {
188
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
189
+ return redbench .AppendCommand (buf , "SADD" , "myset::" + keyN (12 ), keyFieldN (14 ))
190
+ })
191
+ },
192
+ "spop" : func (name string , addr string , opts * redbench.Options ) {
193
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
194
+ return redbench .AppendCommand (buf , "SPOP" , "myset::" + keyN (12 ))
195
+ })
196
+ },
197
+ "smember" : func (name string , addr string , opts * redbench.Options ) {
198
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
199
+ return redbench .AppendCommand (buf , "smember" , "myset::" + keyN (12 ))
200
+ })
201
+ },
202
+ "sismember" : func (name string , addr string , opts * redbench.Options ) {
203
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
204
+ return redbench .AppendCommand (buf , "SISMEMBERS" , "myset::" + keyN (12 ), keyFieldN (14 ))
205
+ })
206
+ },
207
+ "zadd" : func (name string , addr string , opts * redbench.Options ) {
208
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
209
+ return redbench .AppendCommand (buf , "ZADD" , "mysortedset::" + keyN (12 ), key (), keyFieldN (14 ))
210
+ })
211
+ },
212
+ "zrem" : func (name string , addr string , opts * redbench.Options ) {
213
+ redbench .Bench (strings .ToUpper (name ), addr , opts , nil , func (buf []byte ) []byte {
214
+ return redbench .AppendCommand (buf , "ZREM" , "mysortedset::" + keyN (12 ), keyFieldN (14 ))
113
215
})
114
216
},
115
217
}
0 commit comments