我现在想把用户信息缓存进Redis里。用户可以用手机号和身份证来查询,手机号和身份证号都是唯一不可重复的。是不是需要分别以手机号和身份证号为KEY来存两份资料?如何可以只存一份数据就可以通过手机号或身份证来取得用户信息?
以下思路仅供参考:
1:手机号和身份证号均是唯一的,任取其一做为用户信息的key,比如使用手机号mobile为key,使用hash结构; mobile->hash2:建立身份证和手机号的对应关系,使用string结构:id->mobile3:以手机号可以直接查询用户数据,如使用身份证的话,先找出对应的手机号,再根据手机号取hash数据;
个人觉得可以使用Hash来存,比如说用户A,手机号为123,身份证号为456,key可以使用A:手机号或者A:身份证号的形式。
A:手机号
A:身份证号
那么可以HSET A:123 phone 123 id 456或者HSET A:456 phone 123 id 456。
HSET A:123 phone 123 id 456
HSET A:456 phone 123 id 456
理想状况:不考虑外国人的身份证和手机号,你的这种想法完全可以,把身份证号和手机号都对应到key。当调用这个key的时候 ,如果key是15或者18位的时候,就是身份证,11位就是手机号,判断下长度就ok了。但是实际应用中,建议把这两个字段分开来存。
以下思路仅供参考:
1:手机号和身份证号均是唯一的,任取其一做为用户信息的key,比如使用手机号mobile为key,使用hash结构;
mobile->hash
2:建立身份证和手机号的对应关系,使用string结构:id->mobile
3:以手机号可以直接查询用户数据,如使用身份证的话,先找出对应的手机号,再根据手机号取hash数据;
个人觉得可以使用Hash来存,比如说用户A,手机号为123,身份证号为456,key可以使用
A:手机号
或者A:身份证号
的形式。那么可以
HSET A:123 phone 123 id 456
或者HSET A:456 phone 123 id 456
。理想状况:不考虑外国人的身份证和手机号,你的这种想法完全可以,把身份证号和手机号都对应到key。当调用这个key的时候 ,如果key是15或者18位的时候,就是身份证,11位就是手机号,判断下长度就ok了。
但是实际应用中,建议把这两个字段分开来存。