Redis批量数据导入:Python脚本优化与实践
在数据处理和缓存系统开发过程中,将批量数据导入Redis是常见需求。本文记录了我在处理患者ID数据导入Redis时的实践过程,重点解决了类型转换问题并完成了环境配置。
问题背景
我需要将batchData.json文件中的患者ID列表批量导入Redis,目标是创建如下格式的键值对:
hrt:sync:case:patientId:{id} -> {id}原始脚本a.py的实现存在一个关键问题:JSON文件中的ID是整数类型,但在字符串拼接时未进行类型转换。
问题诊断
执行脚本时出现错误:
TypeError: can only concatenate str (not "int") to str错误定位在以下代码行:
pipeline.set(f"hrt:sync:case:patientId:{key}", key)问题在于key是整数类型,而字符串格式化要求字符串类型,导致类型不匹配。
解决方案
修复方案很简单,只需将整数ID转换为字符串:
pipeline.set(f"hrt:sync:case:patientId:{str(key)}", str(key))环境配置流程
-
创建虚拟环境:
mkdir -p ~/.redis python3 -m venv ~/.redis/foo -
激活环境并安装依赖:
source ~/.redis/foo/bin/activate pip install redis -
验证环境:
(foo) root@ubuntu2504:~/or-redis# python -m pip list | grep redis redis 6.4.0
数据文件处理
-
初始数据文件:
batchData.json包含整数列表:[62045, 33107, 54165] -
修复后数据文件:
通过vim batchData.json编辑,确保文件格式正确
最终执行与结果
-
执行修复后的脚本:
python a.py -
成功输出:
成功设置 3307 个键值对 -
验证结果:
通过Redis客户端确认键值对已正确创建,验证了批量导入功能的正常运行
关键经验总结
-
类型安全意识:在处理数据时,始终注意类型转换,特别是当数据源与目标系统类型不一致时
-
环境隔离:使用虚拟环境管理依赖,避免系统级包冲突
-
错误处理:精确的错误信息定位是解决问题的关键,本例中错误信息直接指出了类型不匹配问题
-
数据验证:导入前验证数据文件格式,确保JSON格式正确
通过这次实践,我们成功实现了患者ID数据的高效批量导入,为后续的Redis缓存应用奠定了基础。这种批量数据导入模式可轻松扩展到其他类似场景,如用户ID、订单ID等批量处理需求。