问题描述
客户表users
有中如下字段:
- 有5个销售组,每个销售组每个月至少导入一批10万条左右的数据到表中,且只能导入自己销售组的数据
- 同一个销售组内,状态正常的客户(state=0或1)的手机号不可重复,重复的舍弃
- 不同销售组间,客户手机号可以重复
- 每个销售组正常客户数预估在一千万内
要求准确而快速的导入到users
表中
自己尝试过的方法及问题
- 目前是把
users
表中的数据按销售组ID同步到redis中,用set集合保存手机号
SADD users:1 13100010001 13100010002 13100010003
SADD users:2 13100020001 13100020002 13100020003
SADD users:3 13100030001 13100030002 13100030003
- 导入时,先把excel表数据按文件ID(这里假设为8)写入redis,得到set集合
mobiles:8
- 再与销售组原始数据set集合
users:1
做差集,得到差集diff:1
- 最后把差集写入mysql
SADD mobiles:8 13100010001 13100010004
SDIFFSTORE diff:1 mobiles:8 users:1
【问题】 管理端有好几处地方能增删改users
表,加上未知原因,导致mysql与redis两边数据不一致
你期待的结果是什么?
有无更好的方法,把数据准确而快速地导入到mysql中?
其实问题主要是redis和mysql数据会出现不一致。如果可以保证一致的话,现在的办法也是可行的。
如果没办法保证,则只能使用mysql验证手机号是否存在。