《Redis设计与实现》读书笔记

第一部分

SDS较于C字符串更安全、效率更高、功能性更强,也能使用中的一部分函>数,减少了自己重写的开支。
效率方面:SDS保存了自己的len属性(字符串长度)和free属性(SDS中空闲的空间,可用来判断扩容)
安全和功能性方面:
1.空间预分配,SDS小于1MB,free与len相同,大于1MB,free为1MB。
2.惰性释放空间,防止重分配带来的性能影响。删除部分字符后,free仍会留下,但是也提供了API来真正释放。
3.修改SDS时,SDS会先检查自己的空间是否满足,不满足就会扩容。防止了缓冲区溢出
4.SDS实际上保存的是一系列二进制数据而不是字符,所以可以用来存储各种,音频、图片等。

redis中的rehash?
redis的底层数据结构:SDS,双向链表,字典,跳表(sorted set),整数集合(int set),压缩列表(zip list)
redis的数据结构及使用场景

跳表的查询操作:


redis的内存回收是由引用计数法做的。

redis在启动时会创建0-9999共一万个字符串对象,如果有用到其中的值,会共享这些对象而不是创建。

对象会记录最后一次被访问的时间,可以由此进行基于lru算法(最近最少使用)的内存回收

第二部分

redis的持久化策略和抉择

redis的单线程体现在网络请求模块将不同的 I/O 多路复用函数封装成相同的 API 提供给上层使用。
整个模块使 Redis 能以单进程运行的同时服务成千上万个文件描述符,避免了由于多进程应用的引入导致代码实现复杂度的提升,减少了出错的可能性。
select polll和epoll

你可能感兴趣的:(《Redis设计与实现》读书笔记)