上一篇文章从根本上理解了set/get的处理过程,相当于理解了 增.改.查的过程,现在就差一个删了.本篇我们来看一下删除过程. 对于客户端来说,删除操作无需区分何种数据类型,只管进行 del 操作即可. 零.删除命令 del 的定义 主要有两个: del/unlink, 差别是 unlink 速度会更快, 因为其使用了异步删除优化模式, 其定义如下: // 标识只有一个 w, 说明就是一个普通的写操作,没啥好说的 {,,NULL,,-,,,} // 标识为 wF, 说明它是一个快速写的操作,其实…
一.自动装配 1.根据自动装配原理(详见:Spring Boot系列(二):Spring Boot自动装配原理解析),找到spring-cloud-netflix-eureka-client.jar的spring.factories,查看spring.factories如下: 2.进入EurekaClient的自动装配类EurekaClientAutoConfiguration: 3.@ConditionalOnBean(EurekaDiscoveryClientConfiguration.Ma…
前面几篇文章,我们完全领略了redis的string,hash,list,set数据类型的实现方法,相信对redis已经不再神秘. 本篇我们将介绍redis的最后一种数据类型: zset 的相关实现. 本篇过后,我们对redis的各种基础功能,应该不会再有疑惑.有可能的话,我们后续将会对redis的高级功能的实现做解析.(如复制.哨兵模式.集群模式) 回归本篇主题,zset.zset 又称有序集合(sorted set),即是序版本的set.经过上篇的介绍,大家可以看到,redis的读取功能相当…
这可能是我看过的写的最详细的关于redis 选举的文章了, 原文链接 Raft协议是用来解决分布式系统一致性问题的协议,在很长一段时间,Paxos被认为是解决分布式系统一致性的代名词.但是Paxos难于理解,更难以实现,诸如Google大牛们开发的分布式锁系统Chubby都遭遇了很多坑.Raft协议设计的初衷就是容易实现,保证对于普遍的人群都可以十分舒适容易的去理解.另外,它必须能够让人形成直观的认识,这样系统的构建者才能够在现实中进行必然的扩展. 本文从Redis Sentinel集群选择Le…
Redis作为nosql数据库,kv string型数据的支持是最基础的,但是如果仅有kv的操作,也不至于有redis的成功.(memcache就是个例子) Redis除了string, 还有hash,list,set,zset. 所以,我们就来看看hash的相关操作实现吧. 首先,我们从作用上理解hash存在的意义:Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象.从另一个方面来说是,hash可以聚合很多类似的属性,这是s…
上一篇讲了hash数据类型的相关实现方法,没有茅塞顿开也至少知道redis如何搞事情的了吧. 本篇咱们继续来看redis中的数据类型的实现: list 相关操作实现. 同样,我们以使用者的角度,开始理解list提供的功能,相应的数据结构承载,再到具体实现,以这样一个思路来理解redis之list. 零.redis list相关操作方法 从官方的手册中可以查到相关的使用方法. 1> BLPOP key1 [key2] timeout功能: 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直…
上两篇我们讲了hash和list数据类型相关的主要实现方法,同时加上前面对框架服务和string相关的功能介绍,已揭开了大部分redis的实用面纱. 现在还剩下两种数据类型: set, zset. 本篇咱们继续来看redis中的数据类型的实现: set 相关操作实现. 研究过jdk的hashmap和hashset实现的同学,肯定都是知道,set其实就是一个简化版的map,只要将map的 k->v 的形式变为 k->1 的形式就可以了.所以set只是map的一个简单包装类. 同理,对于 redi…
前言 本篇文章着重讲一下在.Net中Host主机的构建过程,依旧延续之前文章的思路,着重讲解其源码,如果有不知道有哪些用法的同学可以点击这里,废话不多说,咱们直接进入正题 Host构建过程 下图是我自己整理的Host构建过程以及里面包含的知识点我都以链接的形式放上来,大家可以看下图,大概了解下过程(由于知识点过多,所以只能分上下两张图了): 图中标识的相关知识点连接如下(ps:与编号对应): 1 环境变量 点击这里 2 命令行参数 点击这里 3 默认配置 点击这里 4 用户机密数据 点击这里 5…
今天博客中的Alamofire源码的版本是以3.4版本为例.上篇博客系统的对NSURLSession相关的东西进行了详细的解析,详情请看<详解NSURLSession>,为了就是给本篇博客打下基础.因为AlamoFire就是对NSURLSession及其相关的东西进行了进一步的封装,让网络请求使用起来更为简单.本篇博客就详细的来窥探一下AlamoFire源码,主要来看一下AlamoFire是如何对NSURLSession进行封装的,并且来看一下在封装时使用了哪些Swift语言中的高级用法,也就…
1.介绍 Hash是以K->V形式存储,而Set则是K存储,空间节省了很多 Redis中Set是String类型的无序集合:集合成员是唯一的. 这就意味着集合中不能出现重复的数据.可根据应用场景需要选用该数据类型.(比如:好友/关注/粉丝/感兴趣的人/黑白名单) 2.源码解析 Redis使用Dict和IntSet保存Set数据 // 1. inset 数据结构,在set数据量小且都是整型数据时使用 typedef struct intset { // 编码范围,由具体存储值决定 uint32_t…