用Bollger记录技术之路的点滴...

关注高性能linux网络编程,NoSQL, c/c++/java ~~~ weibo @语_行 http://weibo.com/201281062~~~ twitter @JerryVector https://twitter.com/JerryVector
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年11月17日

摘要: 最近在基于redis的c客户端hiredis做扩展的时候, 其中一个函数需要接受一个const char **的二级指针作为参数: void *redisCommandArgv(redisContext *c, int argc, const char **argv, const size_t *argvlen);这个函数主要是用于 需要传递多个string值的场景,类似于 lpush, del key1 key2..., zadd key score1 member1 score2 member2...这类命令, 其中 argc是传递参数的个数, argv主要用于传递的string的v... 阅读全文

posted @ 2012-11-17 14:07 语行 阅读(4643) 评论(3) 推荐(1) 编辑

摘要: 上篇概括了redis的启动流程,这篇重点介绍redis如何接受客户端请求并调用处理函数来执行命令。在上一篇里,说到了在initServer()这个函数里边,会调用anetTcpServer和anetUnixServer 这两个函数创建对tcp端口和unix域套接字的监听,那么这里首先重点分析下这两个函数的具体实现。int anetTcpServer(char *err, int port, char *bindaddr){ int s; struct sockaddr_in sa; if ((s = anetCreateSocket(err,AF_INET)) == ANET... 阅读全文

posted @ 2012-11-17 13:17 语行 阅读(4123) 评论(0) 推荐(0) 编辑

摘要: 我们知道,Redis是一个性能非常优异的kv服务器,有关redis的性能及适用场景,在后期做介绍,这里重点介绍下redis的启动流程,也是对近期对redis代码阅读的一点总结,有不足之处,欢迎拍砖.阅读c/c++项目的源码,一般情况下,都将从main函数,那么对于redis的启动流程,下边也从main函数开始说起.首先,main函数里边声明了一个time_t start 变量, 用来对一些操作进行时间统计,如从AOF文件中加载数据,从redisdb中加载数据。接下来,调用initServerConfig() 对struct redisServer server 这一个全部变量进行默认初始化.( 阅读全文

posted @ 2012-11-17 09:58 语行 阅读(3257) 评论(0) 推荐(1) 编辑