
redis
文章平均质量分 92
专业跳大神儿
吾生也有涯,学也无涯。
展开
-
Redis之跳跃表
跳跃表:是一种支持平均O(log(n)),最坏O(N)复杂度的节点查找,可以通过顺序性操作来处理节点的有序数据结构。 举例来理解一下跳跃表的情况: 跳跃表的效率可以和平衡二叉树相比较,但是实现起来却比平衡二叉树简单不少(不用旋转来,旋转去,哈哈) 跳跃表本身呢是有序链表的一种形式,但是在有序链表中选取了一些关键节点,举个例子序列为 1 2 3 4 5 6的有序链表 选取 2 4 6 作为上...原创 2018-03-18 22:52:46 · 1086 阅读 · 1 评论 -
Redis字典的底层实现
redis的字典数据结构设计是最让我觉得精巧的,因为研究过HashMap的源码,一开始并没有觉得到底有什么优秀的地方,也无非就是,数组+链表的形式,但是不同的是在dict这个数据结构中有两张Hash表,一张用来存储,另一张用来做rehash。 先简单说说Hash表的实现方式,就是数组+链表,当要插入或者删除的时候先用一种高级的hash算法求出key的hash值(用的是MurmurHash2算法)...原创 2018-03-06 17:07:04 · 477 阅读 · 0 评论 -
Redis之简单动态字符串&链表
Redis之简单动态字符串 ps:今天一口气看了redis的动态字符串,链表,字典的底层实现,对与其中的一些想法感觉很精妙 (很久没有用我的C++了 突然有点想它 嘻嘻嘻) 首先进行说明一下,redis的底层都是用c语言实现的 应该是为了追求卓越的内存读取修改的能力所以选择了比较底层的语言。众所周知,c语言的字符串是以‘/0’为结尾的,在redis中仍然保持了这个特点,这是为了可以方便直接...原创 2018-03-06 17:08:28 · 286 阅读 · 0 评论 -
Redis的数据库
Redis中的数据库如同MySQL等传统数据库一样,redis也有自己的各个不同的数据库,它们被保存在redisServer结构的redisDb数组当中,在初始化服务器的时候,程序会根据redisServer中的dbnum属性来决定创建多少个数据库(默认数量为16个)。实际上,redis的各个数据库就是用字典实现的一张大的Hash表,表的键是一个字符串对象,值可以是任何redis中的对象类型:...原创 2018-03-25 10:54:05 · 252 阅读 · 0 评论 -
Redis持久化之RDB与AOF
面试的时候被问了几次关于Redis的持久化问题,但是只是泛泛的了解,今天深入琢磨一番。首先为什么要有持久化,持久化用来解决什么问题,怎么解决? 我们都知道Redis是内存数据库,在运行时所有的数据都存放在内存中,可是如果突然死机,或者数据库崩溃,或者仅仅是简单的重启,我们内存中的数据就丢失,那就没人来使用Redis了。正是因为以上的这些原因Redis提供了持久化的策略,所谓持久化,就是将Re...原创 2018-03-25 11:17:08 · 356 阅读 · 0 评论