redis 1.学习资料2.面试题3.知识点

603 阅读3分钟

学习资料

书籍

1.入门和使用
Redis开发与运维 book.douban.com/subject/269…

2.实现原理
Redis设计与实现 book.douban.com/subject/259…

这两本书都非常好,第一本是入门和使用,讲的非常清楚,文字很精确,思路和清晰,又是自己实践过的人,因为平时他们就是运维。
第二本就不用说了,大名鼎鼎的作者黄建宏写的,90后,以前别人都说好,还不觉得,因为一开始上去看不懂啊,我擦,后来仔细看了几遍,才发现是真的好,有大师的风范,这么年轻有为,迟早会成为大师的,这不很多人称他为大陆侯捷来着。在我看来,甚至比侯捷更好,以前上学的时候,比较文青,看到书上有古诗词就觉得高大上,文笔好一点,就觉得很亲切,其实这些花里胡哨的东西根本不重要,关键是要文字准确,写起来吸引人,而不是写散文似的,读完也没什么收获。黄建宏真是找不到一点缺点,无可挑剔,又是耐得住寂寞的人,一个人孤身海外,不在一线城市,蜗居在广东顺德的一隅,每天兢兢业业的书写章节,想一想都觉得伟大,这样的事情岂是很多哪怕是大厂的人可以比,哪怕他的版税收入可能并不高,但是他做的是有版权的事情,属于越老越吃香的行业和事业,永远也不会面临失业的风险,因为他自己就是自己的老板,只是他那条路比较难走,当然长期来看,收入肯定是累积的,总有一天会爆发。

网络资料

面试题

知识点

字符串

redis字符串 juejin.cn/post/684490…

列表

redis列表 juejin.cn/post/684490…

集合

redis集合 juejin.cn/post/684490…

有序集合

redis有序集合 juejin.cn/post/684490…

映射

redis映射 juejin.cn/post/684490…

redis对象

redis对象 juejin.cn/post/684490…

总结

1.其实和平常的数据结构是一模一样的,唯一的就是多了一种实现方式-那就是ziplist压缩列表,其实就是连续内存偏移量 + 大小 + 起始地址这种数据结构。

2.还有一个不一样就是zset有序集合,第二种实现不是map,而是skipList跳跃链表——目的是空间(多了竖向的指针,每个指针都占更多的内存空间)换时间。


1.list和map list ziplist LinkedList //list底层数据结构就是链表
map ziplist Hashtable //map就是数组,Hashtable底层就是数组

2.set和zset set intset Hashtable //竖列全部都是ziplist压缩列表(内存偏移量/大小 + 起始地址) //set无重复集合底层数据结构是map-Hashtable
zset ziplist skiplist //唯一的不同是,第二种实现没有使用map,而是使用skiplist


ziplist实现原理
1.int
2.字符串
3.动态字符串

数据的类型和长度会随着数据大小的变化自动增长和改变,目的就是为了节约内存。

redis-内部数据结构

与其说是内部数据结构,不如说是redis自制的数据结构,目的是节约内存和提高速度。

因为这些数据结构,其他地方都没有介绍,包括算法书。

总而言之,内部数据结构是和外部数据结构独立的,无关的。内部数据结构是实现外部数据结构的一种方式,就像链表有多种实现方式。