文章目录
【关于作者】
关于作者,目前在蚂蚁金服搬砖任职,在支付宝营销投放领域工作了多年,目前在专注于内存数据库相关的应用学习,如果你有任何技术交流或大厂内推及面试咨询,都可以从我的个人博客(https://0522-isniceday.top/)联系我
1.数据模型+操作
2.内部架构
redis内部架构图如下:
2.1.访问架构
采用什么访问模式?
通过网络框架进行访问
I/O模型设计:
概念:网络请求的解析,以及数据存取的处理,是用一个线程、多个线程,还是多个进程来交互处理呢?该如何进行设计和取舍呢?我们一般把这个问题称为I/O模型设计。不同的I/O模型对键值数据库的性能和可扩展性会有不同的影响
体现:
- 网络连接如何处理
- 网络请求的解析
- 数据存取的处理
2.3.索引模块
概念: 根据key能够找到value存储的具体位置,redis不太一样,找到redis的value后,还需要从value的复杂接口(例如集合和列表)中找到具体的数据。redis一般采取高效的索引结构作为value的底层存储
redis为什么采取哈希表作为索引呢?
由于redis的数据都保存在内存中,针对内存的随机访问的特性,哈希表O(1)的操作复杂度比较匹配
2.4.操作模块
- Put/Get等具体的操作方法
2.5.存储模块
2.5.1.分配器
针对内存的分配和释放
2.5.2.持久化
redis的持久模块分为两种方式:日志(AOF)和快照(RDB)
2.6.高可用集群功能模块
主从复制
哨兵机制
2.7.高可扩展集群模块
数据分片
接下来会根据上述的几个模块进行深入的讲解