我有一个SQLite数据库(16G)。表中有三列(起点、终点、距离)。我想将数据库导出到Redis,以便按来源和目的地进行更快的查询。目前,我使用以下代码导出到Redis
conn = sqlite3.connect(dbfile)
cur = conn.cursor()
r = redis.Redis()
# I loop the following code
cur.execute("SELECT o,d,DIST FROM network LIMIT [startloc] OFFSET [offset];")
distlist = cur.fetchall()
records = {'{},{}'.format(o, d): DIST for o, d, DIST in distlist}
with r.pipeline() as pipe:
pipe.mset(records)
pipe.execute()
r.save()
但是,即使我不需要同步写入,我也不能使用multiprocess来加速导出,因为我使用SAVE命令。我可以使用BGSAVE解决此问题吗?或者还有其他解决办法吗?谢谢
我认为您在Redis中混淆了两个概念:
Redis中的管道只有在将多个命令组合在一起时才有意义,而在发布的示例中则不是这样。尝试多次调用MSET(例如10k)并在完成后调用execute
写入磁盘肯定是有意义的,但不要超过一段时间,例如,在导入的最后,每1小时或类似情况写入一次磁盘
你好,马丁
相关问题 更多 >
编程相关推荐