redis数据过滤迁移-python

redis数据过滤迁移-python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import redis

# 连接 Redis
r = redis.Redis(host='xxxxx', port=6379, db=0,password="2024%")
r2 = redis.Redis(host='xxxxx', port=6379, db=0,password="2024%")

# 获取的键名列表
# keys = [b'aaa:asdasd", b'ccc:asdasd', b'aaa: sadsad '] keys = r. keys("*")
keys = r.keys('*')


# 过滤出以"key"开头的哈希表键
filtered_keys = [key for key in keys if key.startswith(b'key')]
redis_keys = [f'{key. decode()}' for key in filtered_keys]


for keys in redis_keys:
# 获取值的类型
value_type = r.type(keys)
if value_type == b'string':
# key处理方法
value = r.get(keys)
r2.set(keys, value)

elif value_type == b'list':
# list处理方法
elements = r.lrange(keys, 0, -1)
r2.rpush(keys, *elements)

elif value_type == b'hash':
# hash处理方法
all_fields_values = r.hgetall(keys)
for key, value in all_fields_values.items():
r2.hset(keys, key, value)

elif value_type == b'set':
# set处理方法
members = r.smembers(keys)
for member in members:
r2.sadd(keys, member)

elif value_type == b'zset':
# zset处理方法
items = r.zrange(keys, 0, -1, withscores=True)
for member, score in items:
r2.zadd(keys, {member: score})

else:
print(f"{keys.decode()}: Unknown type")