面试题答案
一键面试String
- 布局特点:简单的键值对结构,值可以是字符串、整数或浮点数等。键和值都是二进制安全的,一个键最大能存储512MB的数据。
- 应用场景:
- 缓存:例如缓存数据库查询结果,以减少数据库压力。如将用户信息查询结果缓存起来,下次相同查询可直接从Redis获取。
- 计数器:用于统计网站的访问量、文章的阅读数等。如每有一次文章阅读,就对相应文章阅读数的键执行INCR操作。
Hash
- 布局特点:类似对象,是一个键值对集合,其中值又是一个键值对结构。适合存储对象,可对对象的单个字段进行操作。比如存储用户信息,每个用户的各个属性如姓名、年龄等作为Hash的子键和子值。
- 应用场景:
- 存储对象:电商系统中存储商品信息,商品的ID作为键,商品的名称、价格、库存等属性作为Hash的子键和子值。
- 购物车:用户ID作为键,购物车中商品ID和数量作为Hash的子键和子值。
List
- 布局特点:简单的字符串列表,按照插入顺序排序。支持从两端插入和删除元素,可通过索引获取元素。
- 应用场景:
- 消息队列:如生产者消费者模型,生产者将消息插入List的一端,消费者从另一端取出消息。
- 最新消息展示:存储最新的文章发布记录,按照发布时间顺序存储在List中,前端可通过获取List中一定数量的元素展示最新文章。
Set
- 布局特点:无序的字符串集合,集合中的元素唯一,不允许重复。
- 应用场景:
- 去重:统计网站的UV(独立访客),将每个访客的ID存入Set,由于Set元素唯一性,可实现去重。
- 标签系统:如文章标签,一篇文章的多个标签存入Set,可方便查询具有某个标签的所有文章。
Sorted Set
- 布局特点:有序的字符串集合,每个元素都会关联一个分数(score),Redis通过分数来为集合中的成员进行从小到大的排序。
- 应用场景:
- 排行榜:游戏中的玩家积分排行榜,玩家ID作为元素,积分作为score,可方便获取排名情况。
- 带权重的任务队列:任务作为元素,任务的优先级作为score,按照优先级处理任务。