redis里面有个map数据量太大了,怎么分割?

现在有一个大map,里面的key有2w多个
怎么把里面的key每5000个一组,拆成多个map呢?
有具体的命令吗?还是说之只能写代码,先读出来,再分开保存?
想知道该运维的

阅读 2.5k
2 个回答

redis本身不提供这种命令,根据自身需求去拆解,比如要拆成10个hash,就用原本的key % 10来确定放到哪个hash里,后续查询的时候也使用相同的规则来找到对应的hash

用Python脚本:

import redis

client = redis.Redis(host='localhost', port=6379, db=0)

keys = client.hkeys('your_big_hash')

for i in range(0, len(keys), 5000):
    group_keys = keys[i:i+5000]
    
    values = client.hmget('your_big_hash', group_keys)
    
    new_hash_name = f'new_hash_{i//5000}'
    key_value_pairs = dict(zip(group_keys, values))
    client.hmset(new_hash_name, key_value_pairs)

    print(f'Created new hash: {new_hash_name}')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏