摘要: 发送命令请求: (1)当客户端向服务器发送命令的时候,客户端首先会将命令请求转化哪位协议格式,然后发送给服务器 (2)server读取命令请求,进行解析,解析出argv和argc,并且将数据保存到输入缓冲区 (3)查找命令实现,查找命令对应的函数。 (4)执行预备操作 比如执行cmd指针指向的是否是 阅读全文
posted @ 2017-06-25 23:36 柳下_MBX 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 在服务器中,对于所有连接的客户端都会保存在一个链表里面 所以redisclient里面的客户端状态其实就有很多属性 (1)fd套接字描述符 根据fd值那么客户端也不同,如果是-1就是伪客户端,否则就是网络连接的客户端 (2)名字 如果不设置位NULL (3)标识: 比如主从REDIS_MASTER, 阅读全文
posted @ 2017-06-25 21:22 柳下_MBX 阅读(336) 评论(0) 推荐(0) 编辑
摘要: redis是一个事件驱动程序 主要包含 文件事件和时间事件 文件事件:主要就是server和client进行操作产生的文件 时间事件:主要就是一些需要定时执行的事件。 文件事件: 文件事件处理器是单线程运行的,但是通过IO多路复用,可以处理多个套接字 下面是文件事件处理器的结构 文件事件处理器主要是 阅读全文
posted @ 2017-06-25 20:49 柳下_MBX 阅读(435) 评论(0) 推荐(0) 编辑
摘要: AOF持久化是通话记录执行的命令进行存储的 AOF持久化的事先可以分为 (1)文件追加,新写入的命令都会被追加到redisserver的aof_buf缓冲区里面。 在服务器每一次执行事件循环的时候都会判断是否需要写入同步aof文件 这取决于服务器的配置 appendfsync值 always每一次都 阅读全文
posted @ 2017-06-25 03:13 柳下_MBX 阅读(217) 评论(0) 推荐(0) 编辑
摘要: redis是一个内存数据库,所有我们需要将他定时存在磁盘上,如果没有开启AOF,那么会生成RDB文件进行存储,其实就是个二进制文件 RBD文件通过SAVE BGSAVE进行创建, SAVE会阻塞服务器进程,如果执行的话,那么client在这个期间发出的请求都不会响应 BGSAVE其实是创建fork出 阅读全文
posted @ 2017-06-25 01:38 柳下_MBX 阅读(318) 评论(0) 推荐(0) 编辑
摘要: redis server有很多个数据库空间 如下如所示 dbnum表示的是数据库的数量,db指针指向的是一个redisdb数组,默认都是16个,每一个都是一个redisdb结构的数据库,redis client结构里面会有一个redisdb的指针,指向的就是其中的一个数据库 每一个redisdb里面 阅读全文
posted @ 2017-06-25 01:00 柳下_MBX 阅读(578) 评论(0) 推荐(1) 编辑