
Redis技术探秘
对nosql数据库redis技术的介绍、学习与探索。
lazycece
http://lazycece.com
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Redis技术分享
前言 以前做过一个有关redis的技术分享,这里将之前分享的内容做了抽减,来大概的介绍一下redis,以帮助快速入门,对redis有个概要性的了解,不会做深入的介绍。本文中代码由于是直接用以前PPT上的截图,所以没有贴源码,请谅解。 本文内容如有错误的地方,欢迎指正。 Redis是什么? Redis是完全开源免费、遵守BSD协议的一个高性能的key-v...原创 2018-03-26 22:17:10 · 4084 阅读 · 0 评论 -
ubuntu下redis安装、配置及使用
ubantu源安装 安装/查看版本信息 apt install redis-server redis-server -version redis服务启动/重启/关闭/查看状态 service redis start service redis rstart service redis stop service redis status 卸载服务 apt --purge remove redis...原创 2018-09-18 15:38:59 · 1053 阅读 · 0 评论 -
Redis源码剖析之SDS
SDS简介 简单动态字符串(simple dynamic string),是redis底层为字符串而设计的一种数据结构,是针对C字符串的一个改良版。凡是涉及到需要修改的字符串均采用sds来存储,而非C字符串。 SDS数据结构 如下是sds数据结构的定义(sds.h头文件中): /* Note: sdshdr5 is never used, we just access the fl...原创 2018-07-22 21:51:22 · 920 阅读 · 0 评论 -
Redis源码剖析之字典
Redis字典 字典是一个key-value形式的数据结构,使用过java中map结构的都应该了解,因为其也是字典;而了解哈希表的也应该不会陌生,因为字典的底层就是哈希表。而redis本身就是一个key-value形式的nosql数据库,足以见得字典结构在redis中的地位。 数据结构 字典的定义是在redis源码中的dict.h头文件中,其底层是由哈希表构成。 哈希表 首先来看...原创 2018-07-25 22:29:01 · 281 阅读 · 0 评论 -
Redis源码剖析之整数集合
整数集合 整数集合(intset),故名思意,是存放整数的集合数据结构,从而可知其是集合(Set)的底层实现之一。而从源码中可知,整数集合中的元素又是从小到大来排序的。 数据结构 整数集合的定义在源码头文件intset.h中,如下所示: typedef struct intset { uint32_t encoding; uint32_t length; i...原创 2018-07-28 23:38:19 · 298 阅读 · 0 评论 -
Redis源码剖析之压缩列表
压缩列表(ziplist) 压缩列表是一个特殊编码的列表,为节约内存而开发。 压缩列表可以保存字符串和整型值,其中整数存放时仍是整数,而不会变成字符。 压缩列表允许push和pop操作在时间复杂度为O(1)的情况下完成。但是每个操作都可能需要重新分配ziplist使用的内存,所以实际的复杂性受ziplist使用内存量及其变动的影响。 压缩列表在redis中是列表键和哈希键的底层实现之一。 由于...原创 2018-08-05 21:01:14 · 569 阅读 · 0 评论 -
Redis源码剖析之zipmap
以下涉及到的源码均为redis5.0-rc3版本的代码【点击查看官方源码】 zipmap zipmap是为优化string映射到其他string这种结构而生的,故名思意其能节约内存。 zipmap是redis中hash结构的底层涉及之一。当hash存储的元素数量少的情况下,底层使用zipmap结构,一旦元素数量达到一个限定值的时候就会自动切换成哈希表。 由于zipmap的特性,hash结...原创 2018-08-11 22:09:03 · 310 阅读 · 0 评论 -
Redis源码剖析之对象
以下涉及到的源码均为redis5.0-rc3版本的代码【点击查看官方源码】 redis对象 在redis中,定义了5中基本对象,分别为string、list、set、zset、hash。而为了方便管理与操作,redis又对这5种对象进行了一次外围封装,如下所示(server.h头文件): typedef struct redisObject { unsigned type:4...原创 2018-08-20 00:11:03 · 821 阅读 · 0 评论 -
Redis源码剖析之命令
以下涉及到的源码均为redis5.0-rc3版本的代码【点击查看官方源码】 redis命令 在redis服务器中,对命令进行了结构封装,如下所示(server.h头文件中): struct redisCommand { char *name; //命令名称 redisCommandProc *proc; //指向命令函数实习的指针 int ...原创 2018-08-22 21:08:33 · 667 阅读 · 0 评论 -
Redis源码剖析之命令执行核心
以下涉及到的源码均为redis5.0-rc3版本的代码【点击查看官方源码】 Redis命令执行 Redis执行命令时都会先建立一个客户端,然后由客户端去和服务器连接,在执行命令(使用lua脚本执行亦如此,只不过lua的客户端是个伪客户端而已)。redis的命令执行中有一个核心部分,就是call()方法,call函数声明如下: void call(client *c, int flag...原创 2018-09-01 18:56:59 · 1346 阅读 · 0 评论 -
Redis源码剖析之数据库结构
以下涉及到的源码均为redis5.0-rc3版本的代码【点击查看官方源码】 Redis服务器初始化数据库的个数为16个,由server.h头文件中的宏定义而来,如下所示: #define CONFIG_DEFAULT_DBNUM 16 并且每个数据库的结构都有一个redisDb构成,如下是redisDb的数据结构定义(server.h头文件中),各字段的含义可见上面的源码注释: ...原创 2018-08-24 22:01:31 · 193 阅读 · 0 评论 -
Redis源码剖析之服务器
以下涉及到的源码均为redis5.0-rc3版本的代码【点击查看官方源码】 服务器结构 在redis的头文件server.h中定义了服务器的数据结构,略见如下:(详细的可在文末的源码部分见得) struct redisServer { //服务器的一些信息 · · · } 服务器初始化 在redis服务器启动中,在服务器的初始化过程中主要由三...原创 2018-08-24 22:29:58 · 543 阅读 · 0 评论