设为首页 加入收藏

TOP

Redis源码解析(二):redis之服务器-redis.c(一)
2015-11-21 01:44:47 来源: 作者: 【 】 浏览:0
Tags:Redis 源码 解析 redis 服务器 -redis.c

我们一次来看这份代码,揭开redis服务器的神秘面纱。

首先是命令映射表:

/*命令映射表,参数1:命令,参数2:指向实现此命令的函数,参数3:参数个数,参数4:标志位(具体信息看注释),
 *参数5:从参数4计算而得到的字节掩码,参数6:作为可选项的获取键值的函数,参数7:第一个索引位置,参数8:最后一个索引位置
 *参数9:增量,参数10:命令执行时间,参数11:命令调用次数
 */
struct redisCommand redisCommandTable[] = {
    //获取字符串命令
    {"get",getCommand,2,"rF",0,NULL,1,1,1,0,0},
    //设置字符串命令
    {"set",setCommand,-3,"wm",0,NULL,1,1,1,0,0},
    //当且仅当key不存在的情况设置字符串
    {"setnx",setnxCommand,3,"wmF",0,NULL,1,1,1,0,0},
    //当且仅当key存在的情况设置字符串,生存时间为秒级
    {"setex",setexCommand,4,"wm",0,NULL,1,1,1,0,0},
    //设置字符串,生存时间为毫秒级
    {"psetex",psetexCommand,4,"wm",0,NULL,1,1,1,0,0},
    //如果key存在则在末尾加如果不存在就相当于set
    {"append",appendCommand,3,"wm",0,NULL,1,1,1,0,0},
    //字符串长度
    {"strlen",strlenCommand,2,"rF",0,NULL,1,1,1,0,0},
    //删除一个或多个key
    {"del",delCommand,-2,"w",0,NULL,1,-1,1,0,0},
    //判断key是否存在
    {"exists",existsCommand,2,"rF",0,NULL,1,1,1,0,0},
    //当key存在时清除偏移量后面的值,否则自动生成新字符串
    {"setbit",setbitCommand,4,"wm",0,NULL,1,1,1,0,0},
    //获取指定偏移量后的位
    {"getbit",getbitCommand,3,"rF",0,NULL,1,1,1,0,0},
    {"setrange",setrangeCommand,4,"wm",0,NULL,1,1,1,0,0},
    {"getrange",getrangeCommand,4,"r",0,NULL,1,1,1,0,0},
    {"substr",getrangeCommand,4,"r",0,NULL,1,1,1,0,0},
    {"incr",incrCommand,2,"wmF",0,NULL,1,1,1,0,0},
    {"decr",decrCommand,2,"wmF",0,NULL,1,1,1,0,0},
    {"mget",mgetCommand,-2,"r",0,NULL,1,-1,1,0,0},
    {"rpush",rpushCommand,-3,"wmF",0,NULL,1,1,1,0,0},
    {"lpush",lpushCommand,-3,"wmF",0,NULL,1,1,1,0,0},
    {"rpushx",rpushxCommand,3,"wmF",0,NULL,1,1,1,0,0},
    {"lpushx",lpushxCommand,3,"wmF",0,NULL,1,1,1,0,0},
    {"linsert",linsertCommand,5,"wm",0,NULL,1,1,1,0,0},
    {"rpop",rpopCommand,2,"wF",0,NULL,1,1,1,0,0},
    {"lpop",lpopCommand,2,"wF",0,NULL,1,1,1,0,0},
    {"brpop",brpopCommand,-3,"ws",0,NULL,1,1,1,0,0},
    {"brpoplpush",brpoplpushCommand,4,"wms",0,NULL,1,2,1,0,0},
    {"blpop",blpopCommand,-3,"ws",0,NULL,1,-2,1,0,0},
    {"llen",llenCommand,2,"rF",0,NULL,1,1,1,0,0},
    {"lindex",lindexCommand,3,"r",0,NULL,1,1,1,0,0},
    {"lset",lsetCommand,4,"wm",0,NULL,1,1,1,0,0},
    {"lrange",lrangeCommand,4,"r",0,NULL,1,1,1,0,0},
    {"ltrim",ltrimCommand,4,"w",0,NULL,1,1,1,0,0},
    {"lrem",lremCommand,4,"w",0,NULL,1,1,1,0,0},
    {"rpoplpush",rpoplpushCommand,3,"wm",0,NULL,1,2,1,0,0},
    {"sadd",saddCommand,-3,"wmF",0,NULL,1,1,1,0,0},
    {"srem",sremCommand,-3,"wF",0,NULL,1,1,1,0,0},
    {"smove",smoveCommand,4,"wF",0,NULL,1,2,1,0,0},
    {"sismember",sismemberCommand,3,"rF",0,NULL,1,1,1,0,0},
    {"scard",scardCommand,2,"rF",0,NULL,1,1,1,0,0},
    {"spop",spopCommand,2,"wRsF",0,NULL,1,1,1,0,0},
    {"srandmember",srandmemberCommand,-2,"rR",0,NULL,1,1,1,0,0},
    {"sinter",sinterCommand,-2,"rS",0,NULL,1,-1,1,0,0},
    {"sinterstore",sinterstoreCommand,-3,"wm",0,NULL,1,-1,1,0,0},
    {"sunion",sunionCommand,-2,"rS",0,NULL,1,-1,1,0,0},
    {"sunionstore",sunionstoreCommand,-3,"wm",0,NULL,1,-1,1,0,0},
    {"sdiff",sdiffCommand,-2,"rS",0,NULL,1,-1,1,0,0},
    {"sdiffstore",sdiffstoreCommand,-3,"wm",0,NULL,1,-1,1,0,0},
    {"smembers",sinterCommand,2,"rS",0,NULL,1,1,1,0,0},
    {"sscan",sscanCommand,-3,"rR",0,NULL,1,1,1,0,0},
    {"zadd",zaddCommand,-4,"wmF",0,NULL,1,1,1,0
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇润乾报表附加数据集在集算报表中.. 下一篇Excel批量自动填充行号

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: