redis中set命令的源码分析】的更多相关文章

首先在源码中的redis.c文件中有一个结构体:redisCommand redisCommandTable[],这个结构体中定义了每个命令对应的函数,源码中的set命令对应的函数是setCommand函数,这个函数是在t_string.c中进行定义的.这个函数中开始部分根据client返回的信息做一些初始化操作,最后通过setGenericCommand函数进行具体的执行操作.这个函数也是在t_string.c文件中.这个函数中首先会根据初始化的参数判断当前的redis是否符合要求,所有都判读…
一.介绍相关 说Redis : 介绍Redis特性,使用场景,使用Jedis操作Redis等. 二.源码分析 1. 数据结构 Redis源码分析(sds):Redis自己封装的C语言字符串类型. Redis源码分析(dict):字典的实现,Hash表. Redis源码分析(adlist):Redis中的双向链表. Redis源码分析(skiplist) :Redis 中的跳跃表,平均O(log n)的查询效率. 2. 内存编码数据结构 Redis源码分析(intset):Redis 特有内存数据…
NioEventLoopGroup的无参构造: public NioEventLoopGroup() { this(0); } 调用了单参的构造: public NioEventLoopGroup(int nThreads) { this(nThreads, (Executor)null); } 继续看到双参构造: public NioEventLoopGroup(int nThreads, Executor executor) { this(nThreads, executor, Select…
在RocketMQ中,使用BrokerStartup作为启动类,相较于NameServer的启动,Broker作为RocketMQ的核心可复杂得多 [RocketMQ中NameServer的启动源码分析] 主函数作为其启动的入口: public static void main(String[] args) { start(createBrokerController(args)); } 首先通过createBrokerController方法生成Broker的控制器BrokerControll…
接着上一篇博客  [RocketMQ中Broker的启动源码分析(一)] 在完成准备工作后,调用start方法: public static BrokerController start(BrokerController controller) { try { controller.start(); String tip = "The broker[" + controller.getBrokerConfig().getBrokerName() + ", " + c…
Broker和前面分析过的NameServer类似,需要在Pipeline责任链上通过NettyServerHandler来处理消息 [RocketMQ中NameServer的启动源码分析] 实际上就通过前面提到的SendMessageProcessor的processRequest方法处理 [RocketMQ中Broker的启动源码分析(一)] SendMessageProcessor的processRequest方法: public RemotingCommand processReques…
通过DefaultMQPullConsumer作为默认实现,这里的启动过程和Producer很相似,但相比复杂一些 [RocketMQ中Producer的启动源码分析] DefaultMQPullConsumer的构造方法: public DefaultMQPullConsumer(final String consumerGroup, RPCHook rpcHook) { this.consumerGroup = consumerGroup; defaultMQPullConsumerImpl…
1.startsWith(String prefix, int toffset)方法 包括startsWith(*),endsWith(*)方法,都是调用上述一个方法 public boolean startsWith(String prefix, int toffset) { char ta[] = value; int to = toffset; char pa[] = prefix.value; int po = 0; int pc = prefix.value.length; // No…
Springboot中mybatis执行逻辑源码分析 在上一篇springboot整合mybatis源码分析已经讲了我们的Mapper接口,userMapper是通过MapperProxy实现的一个动态代理,所有调用userMapper的方法,最终都会代理到MapperProxy的invoke方法上,我们这次就来看看mybatis具体的执行流程.为了简单易懂,本次的示例用的是最简单的查询语句且不包含事务. 本篇文档的源码路径https://github.com/wbo112/blogdemo/t…
Redis底层链表的源码分析: 一.链表结点的结构(单个结点): // listNode 双端链表节点 typedef struct listNode { // 前置节点 struct listNode *prev; // 后置节点 struct listNode *next; // 节点的值 void *value; } listNode; 该链表为双向链表,由多个listNode结点组成的链表结构图如下: 二.双端链表的结构: // list 双端链表 typedef struct list…