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

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

随笔分类 -  Redis

摘要:上两篇介绍了redis的启动流程接受客户端请求到调用请求处理函数,在这篇里,我将介绍redis事件触发细节,即epoll介绍。从redis源码可以看出,redis的io模型主要是基于epoll实现的,不过它也提供了 select和kqueue的实现,默认采用epoll。ae.c#ifdef HAVE_EPOLL#include "ae_epoll.c"#else #ifdef HAVE_KQUEUE #include "ae_kqueue.c" #else #include "ae_select.c" #endif#endif通过这么 阅读全文

posted @ 2012-11-18 16:25 语行 阅读(9750) 评论(0) 推荐(2)

摘要:最近在基于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 语行 阅读(4683) 评论(3) 推荐(1)

摘要:我们知道,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 语行 阅读(3296) 评论(0) 推荐(1)

摘要:毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。下面是一篇新鲜出炉的文章,其作者是Redis作者@antirez,他描述了Redis比较适合的一些应用场景,NoSQLFan简单列举在这里,供大家一览:1.取最新N个数据的操作比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取使用LPUSH latest.comment.. 阅读全文

posted @ 2012-11-16 17:31 语行 阅读(913) 评论(1) 推荐(1)