0

我想在我的 Redis 服务器上打开 DB0,处理其中的数据,然后写入 DB1。DB0 中有大约 300 万个键。为了减少硬盘操作,我使用“CONFIG SET save "300 10000"”让服务器每5分钟写入一次磁盘。这是我的代码:

    import redis

    idLinkoutIds = redis.Redis(host='127.0.0.1', port=6379, db=0)
    idLinkinIds = redis.Redis(host='127.0.0.1', port=6379, db=1)

    i = 0
    allKeys = idLinkoutIds.keys() # There're 3,228,675 keys.

    for key in allKeys:
        if i % 100000 == 0:
            print str(i / 10000) + ' million ids completet'
        i += 1

        linkOutIds = idLinkoutIds.lrange(key, start=0, end=-1)
        for eachKey in linkOutIds:
            idLinkinIds.lpush(eachKey, key) # Write to DB1
        idLinkoutIds.delete(key) # DB0 is useless, I just need DB1

    idLinkoutIds.save()      
    idLinkinIds.save()

    print 'Done'

当处理 100 万个密钥时,Redis 服务器刚刚关闭,我收到“ConnectionError: Error 10061 connected 127.0.0.1:6379”。然后我删除 idLinkoutIds.delete(key) 只是为了尝试,并在处理 80 万个密钥时再次关闭服务器。

我认为这不是硬件原因,因为我使用的是 64 位操作系统和 8G RAM。所以我真的很困惑。服务器刚刚关闭。谁能给我一个方向。

4

0 回答 0