@@ -119,13 +119,19 @@ def _get_default_operation(self) -> str:
119119 """Get default operation based on workload type."""
120120 workload_type = self .config .type
121121 if workload_type == "high_throughput" :
122- return random .choice (["SET" , "GET" , "INCR" , "DEL" , "LPUSH" , "LRANGE" , "LTRIM" ])
122+ return random .choice ([
123+ "SET" , "GET" , "INCR" , "DECR" , "DEL" , "EXISTS" , "EXPIRE" , "TTL" ,
124+ "LPUSH" , "RPUSH" , "LRANGE" , "LPOP" , "RPOP" , "LLEN" , "LTRIM" ,
125+ "SADD" , "SREM" , "SMEMBERS" , "SCARD" ,
126+ "HSET" , "HGET" , "HDEL" , "HGETALL" , "HLEN" ,
127+ "ZADD" , "ZREM" , "ZRANGE" , "ZCARD" , "ZSCORE"
128+ ])
123129 elif workload_type == "list_operations" :
124- return random .choice (["LPUSH" , "LRANGE" , "LPOP" ])
130+ return random .choice (["LPUSH" , "RPUSH" , " LRANGE" , "LPOP" , "RPOP" , "LLEN" , "LTRIM " ])
125131 elif workload_type == "pubsub_heavy" :
126132 return random .choice (["PUBLISH" , "SUBSCRIBE" ])
127133 else :
128- return random .choice (["SET" , "GET" ])
134+ return random .choice (["SET" , "GET" , "INCR" , "DECR" , "DEL" , "EXISTS" ])
129135
130136 @abstractmethod
131137 def execute_operation (self ) -> int :
@@ -227,35 +233,160 @@ def execute_operation(self) -> int:
227233 operation = self ._choose_operation ()
228234
229235 if operation == "SET" :
230- key = self ._generate_key (operation )
236+ key = self ._generate_key ("STRING:" )
231237 value = self ._generate_value ()
232238 pipe .set (key , value )
233239
234240 elif operation == "GET" :
235- key = self ._generate_key (operation )
241+ key = self ._generate_key ("STRING:" )
236242 pipe .get (key )
237243
244+ elif operation == "DEL" :
245+ key = self ._generate_key ("STRING:" )
246+ pipe .delete (key )
247+
248+ elif operation == "EXPIRE" :
249+ key = self ._generate_key ("STRING:" )
250+ ttl = random .randint (60 , 3600 ) # 1 minute to 1 hour
251+ pipe .expire (key , ttl )
252+
253+ elif operation == "TTL" :
254+ key = self ._generate_key ("STRING:" )
255+ pipe .ttl (key )
256+
257+ elif operation == "EXISTS" :
258+ key = self ._generate_key ("STRING:" )
259+ pipe .exists (key )
260+
261+ elif operation == "TYPE" :
262+ key = self ._generate_key ("STRING:" )
263+ pipe .type (key )
264+
265+ elif operation == "APPEND" :
266+ key = self ._generate_key ("STRING:" )
267+ value = self ._generate_value ()
268+ pipe .append (key , value )
269+
270+ elif operation == "STRLEN" :
271+ key = self ._generate_key ("STRING:" )
272+ pipe .strlen (key )
273+
238274 elif operation == "INCR" :
239- key = self ._generate_key (operation )
275+ key = self ._generate_key ("NUMSTRING:" )
240276 pipe .incr (key )
241277
242- elif operation == "DEL" :
243- key = self ._generate_key (operation )
244- pipe .delete (key )
278+ elif operation == "INCRBY" :
279+ key = self ._generate_key ("NUMSTRING:" )
280+ amount = random .randint (1 , 10 )
281+ pipe .incrby (key , amount )
282+
283+ elif operation == "DECR" :
284+ key = self ._generate_key ("NUMSTRING:" )
285+ pipe .decr (key )
286+
287+ elif operation == "DECRBY" :
288+ key = self ._generate_key ("NUMSTRING:" )
289+ amount = random .randint (1 , 10 )
290+ pipe .decrby (key , amount )
245291
246292 elif operation == "LPUSH" :
247- key = self ._generate_key (operation )
293+ key = self ._generate_key ("LIST:" )
248294 value = self ._generate_value ()
249295 pipe .lpush (key , value )
250296
251297 elif operation == "LRANGE" :
252- key = self ._generate_key (operation )
298+ key = self ._generate_key ("LIST:" )
253299 pipe .lrange (key , 0 , 10 )
254300
255301 elif operation == "LTRIM" :
256- key = self ._generate_key (operation )
302+ key = self ._generate_key ("LIST:" )
257303 pipe .ltrim (key , 0 , 10 )
258304
305+ elif operation == "RPUSH" :
306+ key = self ._generate_key ("LIST:" )
307+ value = self ._generate_value ()
308+ pipe .rpush (key , value )
309+
310+ elif operation == "RPOP" :
311+ key = self ._generate_key ("LIST:" )
312+ pipe .rpop (key )
313+
314+ elif operation == "LPOP" :
315+ key = self ._generate_key ("LIST:" )
316+ pipe .lpop (key )
317+
318+ elif operation == "LLEN" :
319+ key = self ._generate_key ("LIST:" )
320+ pipe .llen (key )
321+
322+ elif operation == "SADD" :
323+ key = self ._generate_key ("SET:" )
324+ value = self ._generate_value ()
325+ pipe .sadd (key , value )
326+
327+ elif operation == "SREM" :
328+ key = self ._generate_key ("SET:" )
329+ value = self ._generate_value ()
330+ pipe .srem (key , value )
331+
332+ elif operation == "SMEMBERS" :
333+ key = self ._generate_key ("SET:" )
334+ pipe .smembers (key )
335+
336+ elif operation == "SCARD" :
337+ key = self ._generate_key ("SET:" )
338+ pipe .scard (key )
339+
340+ elif operation == "HSET" :
341+ key = self ._generate_key ("HASH:" )
342+ field = f"field_{ random .randint (1 , 100 )} "
343+ value = self ._generate_value ()
344+ pipe .hset (key , field , value )
345+
346+ elif operation == "HGET" :
347+ key = self ._generate_key ("HASH:" )
348+ field = f"field_{ random .randint (1 , 100 )} "
349+ pipe .hget (key , field )
350+
351+ elif operation == "HDEL" :
352+ key = self ._generate_key ("HASH:" )
353+ field = f"field_{ random .randint (1 , 100 )} "
354+ pipe .hdel (key , field )
355+
356+ elif operation == "HGETALL" :
357+ key = self ._generate_key ("HASH:" )
358+ pipe .hgetall (key )
359+
360+ elif operation == "HLEN" :
361+ key = self ._generate_key ("HASH:" )
362+ pipe .hlen (key )
363+
364+ elif operation == "ZADD" :
365+ key = self ._generate_key ("ZSET:" )
366+ score = random .uniform (0 , 100 )
367+ member = self ._generate_value ()
368+ pipe .zadd (key , {member : score })
369+
370+ elif operation == "ZREM" :
371+ key = self ._generate_key ("ZSET:" )
372+ member = self ._generate_value ()
373+ pipe .zrem (key , member )
374+
375+ elif operation == "ZRANGE" :
376+ key = self ._generate_key ("ZSET:" )
377+ start = random .randint (0 , 10 )
378+ end = start + random .randint (1 , 20 )
379+ pipe .zrange (key , start , end )
380+
381+ elif operation == "ZCARD" :
382+ key = self ._generate_key ("ZSET:" )
383+ pipe .zcard (key )
384+
385+ elif operation == "ZSCORE" :
386+ key = self ._generate_key ("ZSET:" )
387+ member = self ._generate_value ()
388+ pipe .zscore (key , member )
389+
259390 operations .append (operation )
260391
261392 # Execute pipeline
0 commit comments