面试题答案
一键面试1. Hash结构存储
- 转换方式:将MySQL用户表中的一条记录转换为Redis的一个Hash结构。用户ID作为Hash的key,姓名和年龄作为Hash的field-value对。例如,用户ID为1,姓名为“张三”,年龄为25,在Redis中存储为:
HSET user:1 name "张三" age 25
。 - 优点:
- 结构清晰,易于理解和操作。对于获取单个用户的所有信息,可以通过一次
HGETALL
操作完成。 - 方便更新部分字段,比如只更新用户年龄,使用
HSET user:1 age 26
即可。
- 结构清晰,易于理解和操作。对于获取单个用户的所有信息,可以通过一次
- 缺点:
- 不适合范围查询,例如查询年龄在某个区间的用户。因为Redis的Hash结构没有直接支持范围查询的功能。
2. String结构存储JSON
- 转换方式:将MySQL用户表中的一条记录转换为JSON格式的字符串,以用户ID作为key,JSON字符串作为value存储在Redis中。例如,上述用户记录转换为
{"id": 1, "name": "张三", "age": 25}
,在Redis中存储为:SET user:1 {"id": 1, "name": "张三", "age": 25}
。 - 优点:
- 数据格式通用,易于与其他系统交互。很多编程语言都有内置的JSON解析库,方便处理。
- 能完整保留数据结构,存储复杂数据较为方便。
- 缺点:
- 更新部分字段相对复杂,需要先获取整个JSON字符串,解析修改后再重新设置回Redis。
- 占用空间相对较大,因为JSON格式有一定的冗余字符。
- 同样不便于范围查询,如需查询年龄范围,需要获取所有用户数据,在应用层进行过滤。