我現在想把用戶資訊緩存進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了。
但是實際應用中,建議把這兩個欄位分開來存。