美文网首页
《Redis设计与实现》读书笔记

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

作者: 就这些吗 | 来源:发表于2020-01-30 05:12 被阅读0次

    第一部分

    SDS较于C字符串更安全、效率更高、功能性更强,也能使用<string.h>中的一部分函>数,减少了自己重写的开支。
    效率方面: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设计与实现》读书笔记

          本文链接:https://www.haomeiwen.com/subject/myvsthtx.html