Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xindoo
redis
提交
34a719d2
R
redis
项目概览
xindoo
/
redis
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
34a719d2
编写于
9月 17, 2010
作者:
A
antirez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
try to parse the request in a smarter way to gain speed... work in progress
上级
2b00385d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
12 addition
and
2 deletion
+12
-2
src/networking.c
src/networking.c
+11
-2
src/redis.h
src/redis.h
+1
-0
未找到文件。
src/networking.c
浏览文件 @
34a719d2
...
...
@@ -28,6 +28,7 @@ redisClient *createClient(int fd) {
selectDb
(
c
,
0
);
c
->
fd
=
fd
;
c
->
querybuf
=
sdsempty
();
c
->
newline
=
NULL
;
c
->
argc
=
0
;
c
->
argv
=
NULL
;
c
->
bulklen
=
-
1
;
...
...
@@ -631,6 +632,7 @@ void resetClient(redisClient *c) {
freeClientArgv
(
c
);
c
->
bulklen
=
-
1
;
c
->
multibulk
=
0
;
c
->
newline
=
NULL
;
}
void
closeTimedoutClients
(
void
)
{
...
...
@@ -672,13 +674,14 @@ again:
if
(
c
->
flags
&
REDIS_BLOCKED
||
c
->
flags
&
REDIS_IO_WAIT
)
return
;
if
(
c
->
bulklen
==
-
1
)
{
/* Read the first line of the query */
char
*
p
=
strchr
(
c
->
querybuf
,
'\n'
);
size_t
querylen
;
if
(
p
)
{
if
(
c
->
newline
)
{
char
*
p
=
c
->
newline
;
sds
query
,
*
argv
;
int
argc
,
j
;
c
->
newline
=
NULL
;
query
=
c
->
querybuf
;
c
->
querybuf
=
sdsempty
();
querylen
=
1
+
(
p
-
(
query
));
...
...
@@ -765,8 +768,14 @@ void readQueryFromClient(aeEventLoop *el, int fd, void *privdata, int mask) {
return
;
}
if
(
nread
)
{
size_t
oldlen
=
sdslen
(
c
->
querybuf
);
c
->
querybuf
=
sdscatlen
(
c
->
querybuf
,
buf
,
nread
);
c
->
lastinteraction
=
time
(
NULL
);
/* Scan this new piece of the query for the newline. We do this
* here in order to make sure we perform this scan just one time
* per piece of buffer, leading to an O(N) scan instead of O(N*N) */
if
(
c
->
bulklen
==
-
1
&&
c
->
newline
==
NULL
)
c
->
newline
=
strchr
(
c
->
querybuf
+
oldlen
,
'\n'
);
}
else
{
return
;
}
...
...
src/redis.h
浏览文件 @
34a719d2
...
...
@@ -286,6 +286,7 @@ typedef struct redisClient {
int
dictid
;
sds
querybuf
;
robj
**
argv
,
**
mbargv
;
char
*
newline
;
/* pointing to the detected newline in querybuf */
int
argc
,
mbargc
;
long
bulklen
;
/* bulk read len. -1 if not in bulk read mode */
int
multibulk
;
/* multi bulk command format active */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录