面试题答案
一键面试数据结构及操作
- Hash结构
- 操作:使用
HSET
命令将每个用户的注册信息存储为一个Hash。例如,假设用户ID为user:1
,用户名username
、邮箱email
、手机号phone
,则可以执行HSET user:1 username "John" email "john@example.com" phone "1234567890"
。这样每个用户信息都以Hash的形式独立存储在Redis中。 - 原因:Hash结构适用于存储对象类型的数据,每个用户的注册信息可以看作一个对象,其属性(用户名、邮箱、手机号等)作为Hash的字段,属性值作为Hash的值。这种结构便于对每个用户信息进行单独的管理和操作,同时也具有较好的内存利用率。
- 操作:使用
- List结构
- 操作:使用
RPUSH
命令将用户ID依次添加到一个List中。例如RPUSH user_list user:1 user:2 user:3
,这个List用于记录所有暂存用户信息的Hash的键名。 - 原因:List结构可以按照插入顺序存储元素,方便后续按顺序读取用户ID,从而批量获取Hash中的用户信息写入MySQL。而且List的操作效率较高,在插入和读取方面都能满足需求。
- 操作:使用
批量存储流程
- 首先,针对每个用户注册信息,使用Hash结构将其存储,生成对应的Hash键名(如
user:1
)。 - 然后,将这些Hash键名通过List结构进行顺序存储。
- 当需要批量写入MySQL时,通过
LRANGE
命令从List中获取所有用户ID,再根据这些ID使用HGETALL
命令获取每个用户完整的注册信息,最后批量写入MySQL。