加载中
缓存java框架技术预研4:LazyUnsafeAllocator.java算法分析

LazyUnsafeAllocator.java这个类,如名字就知道懒惰,就如同c里面的malloc和free一样,没有做任何内存管理。 我们可以跟踪下代码如下: @Override public MemoryBuffer allocate( int size )...

缓存java框架技术预研3:JAVA缓存技术介绍

几个著名Java开源缓存框架介绍(OSCache,JSC)  OSCache是个一个广泛采用的高性能的缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。  OSCache有以下特点: 缓存任何对象,...

redis3.0.0 集群示例

redis-server:3.0.0 jedis:2.7.0 commons-pool2-2.3.jar

RedisOutputStream.java

package redis.clients.util; import java.io.*; import java.nio.charset.Charset; /** * The class implements a buffered output stream without synchronization * There are also s...

Redis源码系列31:redis-beta-1 Upgrade to redis-beta-2

共修改5个地方 1)saveDb(char *filename) 函数中 if (fwrite(sval,sdslen(sval),1,fp) == 0) goto werr; VS if (sdslen(sval) && fwrite(sval,sdslen(sval),1,fp) == 0) goto werr; 增...

Redis源码系列29:客户与服务器之间的网络交互源码readQueryFromClient

处理函数是:readQueryFromClient nread = read(fd, buf, REDIS_QUERYBUF_LEN); if (nread == -1)   { if (errno == EAGAIN)     { nread = 0; }     else ...

Redis源码系列28:ServerSocket接收到client的连接请求处理过程

int anetAccept(char *err, int serversock, char *ip, int *port) {   //世界人民大团结万岁 int fd; struct sockaddr_in sa; unsigned int saLen; while(1)   { ...

Redis源码系列27:网络框架 serverSocket

网络框架部分的代码: signal(SIGHUP, SIG_IGN); signal(SIGPIPE, SIG_IGN); typedef struct aeEventLoop { long long timeEventNextId; aeFileEvent *fileEventHead; aeT...

Redis源码分析系列26:对redis的一点小感触

内存数据库啦---所有的东西存在内存里 可持久化-------可以保存为文件啊,估计也是自己定义的保存格式,哎,自己制定游戏规则。 key/value-----每个节点存了key和value.key用来查找value. 陆...

Redis源码分析系列二十五: 我如何改造redis的rehash过程

昨晚看了下redis的populateCommandTable.大致原理我是明白的, 不过我觉得代码写的有点绕,有些细节的控制看得会让人晕头转向。 我自己想了下,如果让我根据其原理来自己写的话,我的思路会是...

Redis源码分析系列二十四: 7 set---setCommand解析

这个命令应该是打通很多命令的关键点,估计也是用的最多的命令了。 所以必须一字一句的来剖析这个命令的本质! 我只能说:所有的反动派都是纸老虎! 注意:这个操作的数据影响server.db[index...

Redis源码分析系列二十三: 6 info---infoCommand

char *section = c->argc == 2 ? c->argv[1]->ptr : "default"; //设定具体取什么样的信息 //自定义检查点: 1 2 3 if (c->argc > 2) { addReply(c,shared.syntaxerr); return; } //如果参数过...

Redis源码分析系列二十二: 5 time---"timeCommand"

代码如下: void timeCommand(redisClient *c) { struct timeval tv; /* gettimeofday() can only fail if &tv is a bad address so we * don't check for errors. */ gettimeofday(&tv,NULL...

Redis源码分析系列二十一: 4 select---selectCommand

今天来看看select命令。我现在是感觉Redis博大精深,想要在短期内完全搞透这个软件不是那么容易啊!!! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 我之前就很纳闷,server.db有16个成员,为啥每次c...

Redis源码分析系列二十:3 命令"ping"---pingCommand

从字面理解,这个函数也很简单,客户端发一个ping给服务器,服务器返回响应。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 代码如下: void pingCommand(redisClient *c) { //自...

Redis源码分析系列十九:2 命令"echo"---echoCommand

良好的开端,这里再执行第二个命令 echo. void echoCommand(redisClient *c) { addReplyBulk(c,c->argv[1]); } 代码直接调用了函数addReplyBulk,看来这个函数非常容易搞定,倍儿有信心了! ...

Redis源码分析系列十八:1 命令"auth"---authCommand

这个命令主要是密码验证信息,我们来看如何处理的,执行函数为authCommand。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 代码如下: void authCommand(redisClient *c) { if (!server.requirepass) ...

Redis源码分析系列十七:processCommand后续

继续研究。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if ((dictSize(c->pubsub_channels) > 0 || listLength(c->pubsub_patterns) > 0) && c->cmd->proc != subscribeCommand && c->cmd->proc != unsub...

Redis源码分析系列十六:processCommand研究

现在让我们回到processInputBuffer函数。 剩下的代码是: /* Multibulk processing could see a <= 0 length. */ if (c->argc == 0) { resetClient(c); } else { /* Only reset the client ...

Redis源码分析系列十五:processInlineBuffer

现在我们开始分析具体的处理函数processInlineBuffer。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ char *newline = strstr(c->querybuf,"\r\n"); //查找第一个\r\n的位置 int argc; int j; //设...

没有更多内容

加载失败,请刷新页面

返回顶部
顶部