Skip to content

Commit 8682cfd

Browse files
committedFeb 27, 2024
Initial example
1 parent a5e6f90 commit 8682cfd

File tree

3 files changed

+79
-0
lines changed

3 files changed

+79
-0
lines changed
 

‎docker-compose.yaml

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
version: '3'
2+
3+
services:
4+
redis:
5+
image: redis:latest
6+
ports:
7+
- "6379:6379"
8+
command: redis-server --appendonly yes
9+
environment:
10+
- REDIS_MAXMEMORY=50mb
11+
12+
volumes:
13+
redis_data:

‎requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
redis==5.0.1

‎scan_db.py

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
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

Comments
 (0)
Please sign in to comment.