请列举 Redis 中日常开发最常用的数据结构,并分别说明它们的典型应用场景。
考察说明
考查候选人对 Redis 核心数据结构的掌握程度和实际应用能力。
回答思路
- 【回答框架 1】Redis 提供多种数据结构,最常用的是字符串、哈希、列表、集合和有序集合。字符串是最基础的类型,可存储任意二进制数据,常用于缓存、计数器、分布式锁等。哈希适合存储对象,如用户信息、商品详情,支持对字段的单独读写。
- 【回答框架 2】列表按插入顺序存储字符串,支持从两端操作,可做消息队列、时间线等,但需注意其不支持随机访问和消息确认机制。集合是无序去重结构,支持交并差运算,适合做标签、好友关系等。有序集合在集合基础上增加分值用于排序,常用作排行榜、延迟队列。
- 【回答框架 3】此外还有 Bitmap、HyperLogLog、Geo、Stream 等高级类型。Bitmap 可做用户签到、在线状态;HyperLogLog 用于基数统计,内存占用小但有误差;Geo 支持地理位置距离计算;Stream 是更完善的消息队列,支持消费组。
- 【回答框架 4】选择哪种类型要结合具体业务,例如需要排序用有序集合,需要去重用集合,需要消息可靠投递考虑 Stream。
- 【关键点 1】字符串:缓存、计数器、分布式锁
- 【关键点 2】哈希:存储对象,方便修改单个字段
- 【关键点 3】列表:消息队列、时间线
- 【关键点 4】集合:去重、集合运算
- 【关键点 5】有序集合:排行榜、延迟队列
- 【易错点 1】列表做消息队列无确认机制,消息可能丢失
- 【易错点 2】HyperLogLog 有统计误差,不适合精确计数
- 【易错点 3】有序集合的分数精度有限,注意避免分数冲突