• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

redis源码阅读之ziplist

redis源码阅读之ziplist
前文提到了一个adlist,它的注释是这样写的“A generic doubly linked list implementation”,这次要说的ziplist,它的注释是这样写的/* The ziplist is a specially encoded dually linked list that is designed * to be very……继续阅读 »

海叔叔 4年前 (2021-09-01) 52浏览 0评论0个赞

redis源码阅读之quicklist

redis源码阅读之quicklist
说实话,当我看见这两个文件的时候,内心深处的想法是崩溃的(哦谢特麻惹法克),你说你一个redis搞那么多list干啥。。。但是当我看到它的注释的时候,心里稍微好受了一点/* quicklist.c - A doubly linked list of ziplists */真香!!!貌似这东西是一个双向链表,而链表的每个元素就是之前介绍过的zipl……继续阅读 »

海叔叔 4年前 (2021-09-01) 41浏览 0评论0个赞

redis源码阅读之zipmap

redis源码阅读之zipmap
个人觉得zipmap之于dict,就相当于ziplist之于adlist。好了,闲话少说,先看注释/* String -> String Map data structure optimized for size. * This file implements a data structure mapping strings to other s……继续阅读 »

海叔叔 4年前 (2021-09-01) 22浏览 0评论0个赞

redis源码阅读之intset

redis源码阅读之intset
今天来讲讲redis当中set的一种实现形式intset,顾名思义,其应用场景只是在集合当中只包含整数值并且元素数量不多时,set才会采用的一种实现方式。其存储结构如下所示:typedef struct intset { uint32_t encoding; // 编码规则,具体见下面三个宏定义 uint32_t length; ……继续阅读 »

海叔叔 4年前 (2021-09-01) 27浏览 0评论0个赞

redis源码阅读之zskiplist

redis源码阅读之zskiplist
作为zset的底层实现之一(另一个是dict),今天来扯扯zskiplist(跳跃表)这个东西,至于zset是怎么利用这两个东西的,咱们之后再表,这次只是说说跳跃表的实现。跳跃表是一种有序的数据结构,它通过在每个节点中存放多个指向其他节点的指针(正向的指针>=1个,反向的指针就一个)来达到快速访问节点的目的。在redis当中,其代码定义如下:typ……继续阅读 »

海叔叔 4年前 (2021-09-01) 43浏览 0评论0个赞

redis源码阅读之hyperloglog

redis源码阅读之hyperloglog
hyperloglog是redis用来实现基值估算的。/* hyperloglog.c - Redis HyperLogLog probabilistic cardinality approximation.这边理解就要分两头了概念解释基值学过数学的朋友们都应该对这个概念不陌生吧,就是一个集合当中包含的不同元素的个数估算估算……继续阅读 »

海叔叔 4年前 (2021-08-31) 41浏览 0评论1个赞

redis基本命令及解释(二)

redis基本命令及解释(二)
5. 有序集合和散列存储着键值对的映射类似,有序集合也存储着成员与分值之间的映射,并且提供了分值处理命令,以及根据分值大小有序地获取或扫描成员的分值的命令。基础命令命令用例和描述ZADDZADD key-name score member [score member …]——将带有一定分值的成员添加到有序集合里面ZRE……继续阅读 »

海叔叔 4年前 (2021-08-31) 57浏览 0评论0个赞

redis基本命令及解释(一)

redis基本命令及解释(一)
之前写了些比较底层的东西,马上就要写redis当中是如何使用这些底层来实现数据结构的,突然之间想到,应该先简单介绍下各个数据结构的命令,之后再进行实现的分析,如果读者已经对redis命令很熟悉了,就不需要再继续往下看了,等下一篇出来直接看就行了~~~1. 字符串在redis里面字符串可以存储:1)字节串;2)整数;3)浮点数。其中整数的取值范围和系统的长……继续阅读 »

海叔叔 4年前 (2021-08-31) 36浏览 0评论0个赞

redis当中的对象模型

redis当中的对象模型
之前写了redis当中的底部实现以及几种类型的简单命令,今天来聊一聊redis当中的对象模型~~redis为每种外部可以访问到的数据结构提供了一个叫做对象类型的抽象,其底层实现是基于之前咱们讲过的adlist,ziplist等等那一堆,其对外隐藏了这些细节转而实现大家都知道的在文档当中介绍的命令。其实,在我们在redis当中创建某个数据类型的时候,redi……继续阅读 »

海叔叔 4年前 (2021-08-31) 31浏览 0评论0个赞