记下自己对跳表SkipList的理解。 SkipList采用空间换时间的思想,通过增加数据间的链接,达到加快查找速度的目的。 数据库LevelDB和RocksDB中用到了SkipList,Redis中的有序set即zset也用到了SkipList。Java中也提供了ConcurrentSkipLis ...
分类:
其他好文 时间:
2018-04-15 19:41:02
阅读次数:
189
Redis数据结构与内存管理策略(下)标签:RedisRedis数据结构Redis内存管理策略Redis数据类型Redis类型映射Redis数据类型特点与使用场景String、List、Hash、Set、Zset案例:沪江团购系统大促hot-top接口cache设计Redis内存数据结构与编码OBJECTencodingkey、DEBUGOBJECTkey简单动态字符串(simpledynamic
分类:
其他好文 时间:
2018-01-27 11:30:00
阅读次数:
160
leveldb的数据存储采用LSM的思想,将随机写入变为顺序写入,记录写入操作日志,一旦日志被以追加写的形式写入硬盘,就返回写入成功,由后台线程将写入日志作用于原有的磁盘文件生成新的磁盘数据.Leveldb在内存中维护一个数据结构memtable,采用skiplist来实现,保存当前写入的数据,当数 ...
分类:
数据库 时间:
2018-01-18 13:27:18
阅读次数:
303
1、简单动态字符串 Redis只会使用C字符串作为字面量,在大多数情况下,Redis使用SDS(Simple Dynamic String,简单动态字符串)作为字符串表示。 比起C字符串,SDS具有以下优点: 1)常数复杂度获取字符串长度 2)杜绝缓冲区溢出 3)减少修改字符串长度时所需的内存重分配 ...
分类:
其他好文 时间:
2018-01-01 23:42:34
阅读次数:
168
前面已经相信介绍了Redis Cluster集群及其部署过程,下面再补充下有关Redis Cluster应用原理部分内容,以便更加深刻透彻地理解Redis Cluster。 一、Redis Cluster集群最核心的三个目标 性能:这是Redis赖以生存的看家本领,增加集群功能后当然不能对性能产生太 ...
分类:
其他好文 时间:
2017-12-02 23:16:14
阅读次数:
927
SkipList在Leveldb以及lucence中都广为使用,是比较高效的数据结构。由于它的代码以及原理实现的简单性,更为人们所接受。首先看看SkipList的定义,为什么叫跳跃表? "Skip lists are data structures that use probabilistic ba ...
分类:
其他好文 时间:
2017-11-25 15:25:12
阅读次数:
208
先附上学习的博客地址:http://blog.csdn.net/cx8122389/article/details/70049425, 具体见该博客 Java JUC 简介 在Java 5.0 提供了java.util.concurrent(简称JUC )包,在此包中增加了在并发编程中很常用的实用工 ...
分类:
其他好文 时间:
2017-11-21 01:04:49
阅读次数:
192
引子 考虑一个有序表:14->23->34->43->50->59->66->72 从该有序表中搜索元素 < 23, 43, 59 > ,需要比较的次数分别为 < 2, 4, 6 >,总共比较的次数 为 2 + 4 + 6 = 12 次。有没有优化的算法吗? 链表是有序的,但不能使用二分查找。类似二 ...
分类:
其他好文 时间:
2017-10-25 15:17:01
阅读次数:
180
前言:有序集合zset跟其他类型一样,同样有几种编码方式。主要有两种编码方式,REDIS_ENCODING_ZIPLIST和REDIS_ENCODING_SKIPLIST。ziplist可以表示较小的有序集合, skiplist表示任意大小的有序集合。 何时用REDIS_ENCODING_ZIPLI ...
分类:
其他好文 时间:
2017-08-01 12:49:18
阅读次数:
278
前段时间Linux下用nmon监控程序的运行,发现CPU的使用率很高,系统态Sys的比例很高。程序的速度不是很快,怀疑和上面的原因有关。 分别使用perf record,perf report和top -H -p,pstack分析发现。2种可能性,跳表skiplist和内存大量分配回收时lru回收, ...
分类:
其他好文 时间:
2017-07-26 23:27:16
阅读次数:
163