11 2019 档案
摘要:概述 有序集合是ziplist或者skiplist ziplist就是压缩列表,ZADD时 就根据分值来排序 skiplist会复杂一些,他的底层有两个数据结构,一个是跳跃表,一个是字典 dict的作用是定义key和score的关系。两个结构都保存了所有元素,对范围操作和根据key定位分值这种操作就
阅读全文
摘要:概述 集合对象可以是intset或者hashtable(ht) intset是整数集合保存时就顺序往整数集合里面放 ht的话保存的方式是把集合中的value保存到dict的key上。这个dict的value都设置为null intset的条件: 保存的所有元素都是整数值 集合对象保存元素数量不超过5
阅读全文
摘要:概述 哈希对象可以是ziplist或者hashtable(ht) ht好说,ziplist如何保存键值对,就是先把键对象放到队尾,再把值对象放到队尾,这样哥俩永远是挨着的。而且最新添加的永远在队尾处。 ziplist的使用条件: 所有键值对的键和值的字符串长度都小于64字节 键值对数量小于512个
阅读全文
摘要:概述 列表对象编码可以使用ziplist或者linkedlist ziplist的条件: 列表对象保存的所有字符串元素的长度都小于64字节,列表对象使用压缩列表编码 and 列表对象保存的元素数量小于512个; linkedlist的条件: 以上都不满足 上面两个值可以通过参数来改变 list ma
阅读全文
摘要:概述 字符串有三种编码,int、raw、embstr int: 字符串的值 是数字,并且long可以表示 raw:字符串的值大于39字节 embstr:字符串的值小于等于39字节 embstr和raw结构相同,唯一区别就是embstr做了优化,只有一次内存分配,是找了一块连续空间把redisobje
阅读全文
摘要:简介 redisobject redis中的键、值都是一个对象,redisObject 1.具体的数据结构保存在ptr中 2.具体的类型保存在type中,取值如下 类型常量 | 对象的名称 | TYPE命令输出 | | REDIS_STRING | 字符串对象 | string REDIS_LIST
阅读全文
摘要:Redis低级数据结构 简单动态字符串 一般的可变字符串用的都是这个,好处就是返回长度和剩余的长度都是O(1)的复杂度,另外自动提供扩容,不会溢出,另外因为free扩容后会自动预分配一些,阈值在不同情况下是不同的,最大多分配1MB的空间,因此减少了重分配次数,另外减少字符串长度时,除了清掉buf[]
阅读全文
摘要:分布式Barrier 解决线程同步问题 jdk中的Barrier 分布式的Barrier(根据等待线程数量触发,同时进入 and 同时退出)
阅读全文
摘要:分布式计数器介绍 和分布式锁类似,下面是实现分布式计数器的功能 代码 每个DistributedAtomicXXX里面都有一个AtomicValue,这个是分布式的核心实现类。
阅读全文
摘要:分布式锁介绍 分布式执行一些不需要同时执行的复杂任务,curator利用zk的特质,实现了这个选举过程。其实就是利用了多个zk客户端在同一个位置建节点,只会有一个客户端建立成功这个特性。来实现同一时间,只会选择一个客户端执行任务 代码 InterProcessMutex 是一个可重入的排他锁,获取锁
阅读全文
摘要:Master选举介绍 分布式执行一些不需要同时执行的复杂任务,curator利用zk的特质,实现了这个选举过程。其实就是利用了多个zk客户端在同一个位置建节点,只会有一个客户端建立成功这个特性。来实现同一时间,只会选择一个客户端执行任务 代码 选举是无限循环的,可以看到下面的值,会依次增加
阅读全文
摘要:监控节点值的变化 通过NodeCache 来监控节点值的变化。 代码 监控子节点值的变化 还有另外一个类可以监控子节点的变化,就是PathChildrenCache 代码 上面代码可以发现,监控的是p1节点,但是只有p2节点更改才会收到通知,ephe_nd节点变化是没有通知的。所以,只能监控子节点,
阅读全文
摘要:代码 概念 1.inBackground() 该方法就是添加一个异步的回调方法,参数是BackgroundCallback接口,是一个函数式接口。 2.BackgroundCallback的接口参数为client(当前客户端实例)及event(服务端事件) 3.事件类型,CuratorEventTy
阅读全文
摘要:前言 记录下ZK客户端的使用学习,初步想法是从几个方面来记录 1. 如何开始使用及api介绍(创建会话以及增删查改) 2. 异步调用 3. 事件监听 4. Master选举 5. 分布式锁 6. 计数器 7. Barrier 仓库介绍 GroupID/Org | ArtifactID/Name |
阅读全文
浙公网安备 33010602011771号