内容简介:自己撸了好久的源码,发现越到上层,越需要一些指导性的思想来让自己将之前看过的东西串联起来,这就迫切需要大神或者经典书籍来帮自己一把了。大神呢,由于自己比较宅,圈子也比较小,也就放弃了,还是选择了交智商税的方式,选择了黄健宏大神的《Redis设计与实践》来看。在攻读redis后半部分源码期间,我的博客会在中间穿插着一些关于这本书的读书笔记,主要是对于写过博客的补充和对即将讲解源码部分的说明,还请大家提前知晓~比如,刚看了前言的我,就知道了redis当中的事件分为两种:文件事件和时间事件。
自己撸了好久的源码,发现越到上层,越需要一些指导性的思想来让自己将之前看过的东西串联起来,这就迫切需要大神或者经典书籍来帮自己一把了。大神呢,由于自己比较宅,圈子也比较小,也就放弃了,还是选择了交智商税的方式,选择了黄健宏大神的《Redis设计与实践》来看。
在攻读 redis 后半部分源码期间,我的博客会在中间穿插着一些关于这本书的读书笔记,主要是对于写过博客的补充和对即将讲解源码部分的说明,还请大家提前知晓~
比如,刚看了前言的我,就知道了redis当中的事件分为两种:文件事件和时间事件。
文件事件:主要用于应答客户端的连接请求,接收客户端发来的命令以及向客户端返回命令回复
时间事件:主要用于执行常规的维护和管理操作来保持redis服务器的正常运作,一些重要的定时操作是由这类事件管理的~
下面来补充下之前说的SDS对象:
1. redis当中sds字符串除了用来保存数据库中的字符串值之外,还会被用作缓冲区:AOF以及客户端 状态中的输入缓冲区都是由SDS来实现的。
2. SDS与C字符串的区别
- 尝试事件复杂度读取字符串的长度,len属性
- 杜绝缓冲区溢出,len+free属性
- 减少修改字符串时带来的内存重分配次数,空间预分配和惰性空间释放
- 二进制安全,所有SDS API都会以处理二进制的方式来处理SDS存放在buf数组里的数据,程序不会对其中的数据做任何限制、过滤、或者假设,它会使用len属性来判断字符串是否结束
- 兼容部分C字符串函数
下表列出了SDS当中主要操作的API
| 函数 | 作用 |
| sdsnew | 创建一个包含给定C字符串的SDS |
| sdsempty | 创建一个不包含任何内容的空SDS |
| sdsfree | 释放给定的SDS |
| sdslen | 返回SDS的已使用空间字节数 |
| sdsavail | 返回SDS的未使用空间字节数 |
| sdsdup | 创建一个给定SDS的副本 |
| sdsclear | 清空SDS保存的字符串内容 |
| sdscat | 将给定C字符创拼接到SDS字符串的结尾 |
| sdscatsds | 将给定SDS字符串拼接到另一个SDS字符串的末尾 |
| sdscpy | 将给定的C字符串复制到SDS里面,覆盖SDS原有的字符串 |
| sdsgrowzero | 用空字符将SDS扩展至给定长度 |
| sdsrange | 保留SDS给定区间的数据,不再区间内的数据会被覆盖或清除 |
| sdstrim | 接受一个SDS和一个C字符串作为参数,从SDS左右两端分别移除所有在C字符串中出现过的字符 |
| sdscmp | 对比两个SDS字符串是否相同 |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- RIPS源码精读(一):逻辑流程及lib文件夹大致说明
- LFS 8.3 发布,从源码构建自定义 Linux 系统步骤说明
- LFS 8.4 发布,从源码构建自定义 Linux 系统步骤说明
- SDWebImage中文说明
- Kafka配置说明
- ekphrasis使用说明
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
维多利亚时代的互联网
[英] 汤姆·斯丹迪奇 / 多绥婷 / 后浪丨江西人民出版社 / 2017-8 / 38.00元
人类历史上的第一次大连接 回顾互联网的前世 预言互联网的未来 ……………… ※编辑推荐※ ☆《财富》杂志推荐的75本商务人士必读书之一 ☆ 回顾互联网的前世,颠覆你的思维,升级你对互联网的认知 ☆ 人类历史上一次全球大连接是维多利亚时期的电报时代,那时候也有疯狂的资本、 巨大的泡沫、网络新型犯罪、网络亚文化崛起……现在的互联网时代就是电报时代的重演;回顾那......一起来看看 《维多利亚时代的互联网》 这本书的介绍吧!