1
+ import redis
2
+ import time
3
+ import random
4
+ import string
5
+
6
+
7
+ def populate_db (host , port , db_number , key_prefix , n ):
8
+ r = redis .Redis (host = host , port = port , db = db_number )
9
+
10
+ # Generate and load random data into Redis
11
+ for i in range (n ):
12
+ suffix = '' .join (random .choices (string .ascii_letters , k = 5 ))
13
+ key = f"{ key_prefix } { suffix } "
14
+ value = '' .join (random .choices (string .ascii_letters + string .digits , k = 5 ))
15
+ r .set (key , value ) # Set key-value pair in Redis
16
+
17
+ print ("Data loaded into Redis." )
18
+
19
+
20
+ def scan_redis_by_pattern (host , port , db_number , pattern ):
21
+ # Connect to Redis
22
+ r = redis .Redis (host = host , port = port , db = db_number )
23
+
24
+ num_keys = r .dbsize ()
25
+ print ("Number of keys:" , num_keys )
26
+ # Initialize cursor
27
+ cursor = 0
28
+
29
+ # Scan keys matching pattern
30
+ keys = []
31
+ while True :
32
+ cursor , partial_keys = r .scan (cursor , match = pattern )
33
+ keys .extend (partial_keys )
34
+ if cursor == 0 :
35
+ break
36
+
37
+ return keys
38
+
39
+
40
+ host = 'localhost'
41
+ port = 6379
42
+ pattern = 'active_user_id:*'
43
+ db_number = 0
44
+
45
+ populate_db (host , port , db_number , "active_user_id:" , 1 )
46
+ populate_db (host , port , db_number , "user_id:" , 10 )
47
+ start = time .time ()
48
+ keys = scan_redis_by_pattern (host , port , db_number , pattern )
49
+ print (f"DB: { db_number } , Keys: { keys } , Duration: { time .time () - start } s" )
50
+
51
+ populate_db (host , port , db_number , "user_id:" , 1000 )
52
+ start = time .time ()
53
+ keys = scan_redis_by_pattern (host , port , db_number , pattern )
54
+ print (f"DB: { db_number } , Keys: { keys } , Duration: { time .time () - start } s" )
55
+
56
+ populate_db (host , port , db_number , "user_id:" , 100000 )
57
+ start = time .time ()
58
+ keys = scan_redis_by_pattern (host , port , db_number , pattern )
59
+ print (f"DB: { db_number } , Keys: { keys } , Duration: { time .time () - start } s" )
60
+
61
+ db_number = 1
62
+ populate_db (host , port , db_number , "active_user_id:" , 1 )
63
+ start = time .time ()
64
+ keys = scan_redis_by_pattern (host , port , db_number , pattern )
65
+ print (f"DB: { db_number } , Keys: { keys } , Duration: { time .time () - start } s" )
0 commit comments