redis可以多key对应一个value吗?

我现在想把用户信息缓存进Redis里。
用户可以用手机号和身份证来查询,手机号和身份证号都是唯一不可重复的。
是不是需要分别以手机号和身份证号为KEY来存两份资料?
如何可以只存一份数据就可以通过手机号或身份证来取得用户信息?

阅读 16.8k
3 个回答

以下思路仅供参考:

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了。
但是实际应用中,建议把这两个字段分开来存。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题