学习资料
书籍
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自制的数据结构,目的是节约内存和提高速度。
因为这些数据结构,其他地方都没有介绍,包括算法书。
总而言之,内部数据结构是和外部数据结构独立的,无关的。内部数据结构是实现外部数据结构的一种方式,就像链表有多种实现方式。