redis 协议的简单介绍
来源:互联网 发布:微商做价格表的软件 编辑:程序博客网 时间:2024/05/21 11:03
zhoulin@:/opt/redis307/src:gdb ./redis-server --启动redis的服务端(gdb) set args /etc/redis_6379.conf --设置gdb参数
(gdb) br readQueryFromClient --在该函数地方设置断点
1180 nread = read(fd, c->querybuf+qblen, readlen); --从fd中读取来自客户端的查询命令
(gdb) p c->querybuf
$5 = (sds) 0x7ffff1515008 "*3\r\n$3\r\nset\r\n$8\r\nuser1:id\r\n$3\r\n100\r\n"
redis的协议是以\r\n结束,那该函数获取到的命令是什么呢:
*3\r\n --该命令有3个命令 即:set user1:id 100 ,一个3个参数
$3\r\nset\r\n set命令3个字节
$8\r\nuser1:id\r\n ---user1:id的长度是8个字节
$3\r\n100\r\n" --100的长度为3个字节
所以reids的命令的基本格式为 参数个数 参数1长度 参数1值 参数2长度 参数2值 参数3长度 参数3值
(gdb) thread apply all b
Thread 1 (Thread 0x7ffff7fef720 (LWP 39512)):
#0 readQueryFromClient (el=0x7ffff14a9150, fd=10, privdata=0x7ffff1510000, mask=1) at networking.c:1181
#1 0x000000000041b799 in aeProcessEvents (eventLoop=0x7ffff14a9150, flags=3) at ae.c:412
#2 0x000000000041b92e in aeMain (eventLoop=0x7ffff14a9150) at ae.c:455
#3 0x00000000004275e9 in main (argc=2, argv=0x7fffffffe548) at redis.c:3706
bt以后的线程可以看到线程挂起的痕迹:
man->aeMain->aeProcessEvents
0 0
- redis 协议的简单介绍
- 简单的网络协议介绍
- http协议的简单介绍
- Http 协议的简单介绍
- Redis 协议为例谈简单的协议分析
- Redis的简单介绍与相关命令
- redis命令:info 的简单介绍
- Redis的简单介绍及安装
- 《2》IP+TCP协议的简单介绍
- Swift中协议的简单介绍
- Swift中协议的简单介绍
- Mqtt协议:写在前面的简单介绍
- Redis Sentinel简单介绍
- Redis简单介绍
- redis系列 ---简单介绍
- NoSQL- redis简单介绍
- 【Redis】--简单介绍
- POP3协议简单介绍
- Minimum Depth of Binary Tree
- SQL大数据优化下
- linux 下远程执行命令 socket实现
- linux实现针对文本统计字母出现的次数(所有的可打印的字符)
- Linux的僵尸进程处理1
- redis 协议的简单介绍
- Linux C实现小项目配置文件读取
- Linux的僵尸进程处理2
- 代码模版
- C实现heap堆排序
- RxJava学习(十一)
- 快速排序/堆排序
- 算法.List链表加法
- 算法.链表反转