本文共 1405 字,大约阅读时间需要 4 分钟。
说起来,面试的起点其实是一年前。这时候我还在公司工作,收到蚂蚁集团的面试电话。虽然那次面试并没有成功,但这也让我有机会深入了解了一些关于 Redis 的知识。现在我来整理一下自己对 Redis 的理解,希望对后续的准备有所帮助。
Redis 提供了五种常用的数据类型:String、Hash、List、Set 和 Sorted set。这几种数据类型在实际应用中有着广泛的使用场景。
String 是最基本的数据类型,用于存储字符串值。它支持丰富的操作,可以用来存储文本、用户信息等。
Hash 数据类型是一种键值对的集合,适用于存储多对一的数据结构。例如,可以用来存储用户的个人信息(如 age、email 等)。
List 是一个有序的列表,支持插入、删除、取首尾等操作。它常用于实现队列和排行榜功能。
Set 是一个无序的集合,存储唯一的元素。它适用于去重功能,比如在用户系统中存储用户 ID,避免重复注册。
Sorted set 是一个有序的集合,既支持插入、删除操作,还可以根据键值对存储排序信息。它常用于实现热门商品排行榜。
Redis 的灵活性和高性能使其在多个领域有广泛应用。以下是一些典型场景:
计数(Counting)
展示 Top 列表
用户最近访问记录
队列处理
Lua 脚本扩展
主从复制
Redis 是一个单点系统,如果要实现分布式,需要自行构建分布式架构。
通过一致性哈希实现 Redis 结点的分布。具体实现方式是用 MurmurHash 计算 hash 值,通过 Java 的 TreeMap 模拟环状结构,实现均匀分布。
在客户端模块中,主要修改了 Jedis 的分区模块,使其支持基于 BufferKey 的分区。通过 ShardInfo 初始化不同的 Redis 连接池,根据 key/value 的构造方法,创建对应的 Jedis 连接。
总的来说,Redis 的优势在于其高性能和灵活性。面试官问的那些知识点其实不多,但如果复习不够到位,掌握不够熟练,面试也会感到吃力。希望这份笔记能对你有所帮助。
如果需要更多学习资料,可以参考以下资源(部分资源免费):
如果需要这些资料,可以联系我获取完整链接。
转载地址:http://sjbl.baihongyu.com/