redis
文章平均质量分 60
欢谷悠扬
这世上有一种英雄主义,那就是看清了生活的真相,依然热爱生活
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
redis源码之set命令解析(8)
1.背景 源码是redis5版本,在笔记7中,找到了命令数组redisCommandTable 先从最简单的set命令开始看,如何进行最简单的键值对进行set。 2.setCommand setCommand命令实现是在t_string.c文件中。 这里主要是处理set if exist ,set if not exist,set expire 这三种情况。 另外对set命令的value进行redisObject 对象构建。 /* SET key value [NX] [XX] [EX <seco原创 2022-05-21 19:11:28 · 899 阅读 · 0 评论 -
redis源码之server接受客户端请求并处理(7)
1.处理客户端请求 在server.c 的main方法中,在启动的时候针对网卡的各个ip会创建文件事件用于监听tcp请求。 tcp请求会交给acceptTcpHandler去处理。而readQueryFromClient就是用来处理文件读事件处理的。 对于做java的人来说,其实跟netty里对于连接事件,读事件,写事件监听与处理的模式一样。 2.处理读事件readQueryFromClient 方法所在地:networking.c文件中的readQueryFromClient方法 处理流程: nre原创 2022-05-11 21:50:02 · 629 阅读 · 0 评论 -
redis客户端启动与交互简要分析(6)
上图 1.redis客户端启动主流程分析 目前研读的代码是redis5.0,启动流程在redis-cli.c的main函数中 先列一下main函数中,我认为比较重要的函数 main(){ // 客户端默认配置设置 config.hostip = sdsnew("127.0.0.1"); .... // 2.解析命令行携带的参数 firstarg = parseOptions(argc,argv); // 3. 针对不同的模式进行处理 CLUSTER_MANAGER_MODE() c原创 2022-05-11 18:51:49 · 633 阅读 · 0 评论 -
redis源码之RESP协议格式组装(5)
背景 在我们在通过redis-cli启动交互界面时,在界面输入的set key1 value1这种命令会被redis-cli转化为特定的格式传给redis-server。这个格式就是RESP协议。 基本格式 *参数数量\r\n$参数长度\r\n参数\r\n$参数长度\r\n参数\r\n //比如: 原始命令:set key1 value1 RESP命令:*3\r\n$4\r\nset\r\n$4\r\nkey1\r\n$6\r\nvalue1\r\n 解析: *3\r\n //总共3个字符串 $3\原创 2022-05-11 16:59:15 · 476 阅读 · 0 评论 -
源码解析之sds小结(4)
背景 本次阅读的版本是redis5.0,sds共分为5种数据结构,sdshdr5,sdshdr8,sdshdr16,sdshdr32,sdshdr64。 阅读主要的源码文件为sds.h和sds.c ,作为redis对字符串封装的结构体,它在内存控制,二进制安全,快速读取,字符串变长方面表现更好。 缺点:占用更多的内存空间,毕竟有头信息的存在。 1.sds基本结构 从上图可以看出,其基本结构可以大致分为: 头信息部分: 字符串总长度:alloc 字符串已使用长度:len 字符串类型标识:flag 字符串原创 2022-05-06 20:51:26 · 623 阅读 · 0 评论 -
redis源码之sds扩容
redis之sds扩容处理原创 2022-05-06 16:01:15 · 1600 阅读 · 2 评论 -
redis之sds对象创建
分类的意义在于空间精细分配,同时保留自由空间扩容。数据长度的作用是快速获取字符串并对二进制友好。原创 2022-05-05 21:29:04 · 419 阅读 · 0 评论 -
redis server服务端启动流程分析(一)
redis server启动源码解析原创 2022-04-06 22:21:20 · 2322 阅读 · 0 评论
分享