2.6 KiB
2.6 KiB
发货记录 Redis 存储结构说明
Redis 数据结构
Hash 表:shipment_sn_mapping
用于存储 SN/MAC 到出货信息的映射关系。
数据类型: Redis Hash
Key: shipment_sn_mapping
结构:
Hash Key (Field) -> Hash Value
SN/MAC 号 -> JSON 格式的出货信息
存储示例
HSET shipment_sn_mapping "SN0001" '{"date":"2025-11-20","box":"BOX001","ts":"2025-11-20T10:30:00"}'
HSET shipment_sn_mapping "SN0002" '{"date":"2025-11-20","box":"BOX001","ts":"2025-11-20T10:30:00"}'
HSET shipment_sn_mapping "SN0021" '{"date":"2025-11-20","box":"BOX002","ts":"2025-11-20T10:30:00"}'
JSON 值格式
{
"date": "2025-11-20", // 出货日期
"box": "BOX001", // 箱号
"ts": "2025-11-20T10:30:00" // 记录时间戳
}
查询方式
1. 通过 API 查询
接口: GET /api/shipments/query-by-sn?sn=SN0001
响应示例:
{
"found": true,
"sn": "SN0001",
"date": "2025-11-20",
"box": "BOX001",
"ts": "2025-11-20T10:30:00"
}
2. 直接使用 Redis 命令查询
# 查询单个 SN
redis-cli HGET shipment_sn_mapping "SN0001"
# 查询多个 SN
redis-cli HMGET shipment_sn_mapping "SN0001" "SN0002" "SN0003"
# 查看所有记录数量
redis-cli HLEN shipment_sn_mapping
# 查看所有 SN(谨慎使用,数据量大时会很慢)
redis-cli HKEYS shipment_sn_mapping
# 扫描部分数据
redis-cli HSCAN shipment_sn_mapping 0 COUNT 100
数据导入流程
- 用户上传 Excel 文件(包含:出货日期、箱号、SN1-SN20)
- 系统解析 Excel 文件
- 提取每行的出货日期、箱号和所有 SN
- 将数据保存到 SQLite(用于统计和列表展示)
- 同时将每个 SN 映射关系写入 Redis Hash(用于快速查询)
性能特点
- 查询速度: O(1) 时间复杂度,毫秒级响应
- 存储效率: Hash 结构比单独的 Key-Value 更节省内存
- 批量写入: 使用 Pipeline 批量写入,提高导入速度
- 容错性: Redis 写入失败不影响 SQLite 数据保存
使用场景
- 快速查询: 扫描 SN 后立即查询出货信息
- 追溯管理: 根据 MAC 地址追溯出货批次
- 质量追踪: 结合不良品记录,追溯出货批次
- 客户服务: 快速响应客户关于产品出货信息的查询
维护建议
- 定期备份: 使用 Redis RDB 或 AOF 持久化
- 监控容量: 定期检查 Hash 大小
HLEN shipment_sn_mapping - 数据清理: 根据业务需求定期清理过期数据
- 索引优化: 如需按日期或箱号查询,可建立额外的索引结构