![](https://img-blog.csdnimg.cn/20191119233405861.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
good-destiny
这个作者很懒,什么都没留下…
展开
-
Redis教程:事件、客户端和服务器
1 事件Redis服务器是一个事件驱动程序,服务器需要处理以下两类事情:文件事件(file event):Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端(或者其他服务器)的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作 时间事件(time event):Redis服务器中的...原创 2020-02-23 22:17:34 · 241 阅读 · 0 评论 -
Redis教程:数据持久化
目录1 RDB持久化1.1 RDB文件的创建和载入1.2 自动间隔性保存1.3 RDB文件结构2 AOF持久化2.1AOF持久化的实现2.2AOF文件的载入与数据还原1 RDB持久化 Redis提供了RDB持久化功能,可以将Redis内存中的数据库状态保存到磁盘中,避免数据意外丢失。1.1 RDB文件的创建和载入 有两个Red...原创 2020-02-23 20:38:27 · 173 阅读 · 0 评论 -
Redis教程:数据库
1 服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构体的db数组中,db数组的每个项都是一个redis.h/redisDb结构体,每个redisDb结构体代表一个数据库redis.hstruct redisServer { …… //一个数组,保存着服务器中所有数据库 redisDb *db...原创 2020-02-23 12:06:45 · 285 阅读 · 0 评论 -
Redis教程:主从复制
目录1 主从配置方法2 主从复制的作用3 主从复制的机制3.1全量数据同步(full resyncchrozation)3.2 增量同步4 主从复制的实现4.1主从关系的建立1 主从配置方法配置文件: 在从服务器的配置文件中加入:slaveof ip port 启动命令: redis-server启动命令后加入 --slaveof ip p...原创 2020-02-22 22:35:00 · 279 阅读 · 0 评论 -
Redis教程:数据对象分析(二)
目录1 类型检查与命令多态2 内存回收3 对象共享4 对象的时转时长1 类型检查与命令多态 Redis中用于操作键的命令基本上可以分为两种类型:其中一种命令可以对任何类型的键执行,比如DEL命令、EXPIRE命令、RENAME命令、TYPE命令、OBJECT命令等。举个栗子,DEL命令可以用来删除三种不同类型的键:# 字符串键127.0.0.1:6379...原创 2020-02-21 21:39:03 · 215 阅读 · 0 评论 -
Redis教程:数据对象分析(一)
1、 五种基本数据对象图1 redis数据对象2、 数据结构对象分析 Redis中的每个对象都由一个redisObject结构表示,该结构中保存数据相关的三个属性分别是:type、encoding、ptr。redis.htypedef struct redisObject { //类型 unsigned type:4; unsigned n...原创 2020-02-21 16:51:19 · 273 阅读 · 0 评论 -
redis源码剖析(7):基础数据结构quicklist
目录1、quicklist概述2、quicklist源码分析2.1 定义2.2push操作2.3 节点压缩3、总结1、quicklist概述 quicklist是一个3.2版本之后新增的基础数据结构,是redis自定义的一种复杂数据结构,将ziplist和adlist结合到了一个数据结构中。主要是作为list的基础数据结构。在3.2之前,list是...转载 2019-12-03 18:42:10 · 169 阅读 · 0 评论 -
redis源码剖析(6):基础数据结构ziplist
目录1、简介2、数据存储2.1 编码2.2 结构体entry3、基本操作3.1 创建压缩列表3.2 插入元素3.3 删除元素3.5 遍历压缩列表4、连锁更新5、总结1、简介 压缩列表(ziplist)本质上就是一个字节数组,是Redis为了节约内存而设计的一种线性数据结构,可以包含任意多个元素,每个元素可以是一个字节数组或一个整数。 ...转载 2019-12-03 17:07:09 · 168 阅读 · 0 评论 -
redis源码剖析(5):基础数据结构inset
目录1、intset概述2、inset分析2.1 定义2.2 新增元素2.3 升级2.4 总结1、intset概述 整数集合是redis对外数据结构set的底层实现之一,当集合元素不大于设定值并且元素都是整数时,就会用intset作为set的底层数据结构。2、inset分析2.1 定义inset结构体定义如下:typedef ...转载 2019-12-03 16:34:33 · 398 阅读 · 0 评论 -
redis源码剖析(3):基础数据结构dict
目录1、dict概述2、字典的定义3、哈希算法4、字典的初始化及新增键值对4.1 字典初始化4.2 新增键值对5、rehash(重新散列)操作5.1 rehash操作方式5.2 rehash发生时候6、渐进式rehash7、总结8、参考1、dict概述 dict顾名思义就是字典,也就是保存一种键值对的数据结构。每个键都是唯一的,不同...原创 2019-12-03 15:59:24 · 232 阅读 · 0 评论 -
redis源码剖析(2):基础数据结构ADLIST
目录1、ADList概述2、链表和链表节点定义3、链表迭代器4、总结1、ADList概述 ADList(A generic doubly linked list)是redis自定义的一种双向链表,广泛运用于redisClients、redisServer、发布订阅、慢查询、监视器等(注:3.0及以前还会被运用于list结构中,在3.2以后...转载 2019-12-02 23:04:19 · 145 阅读 · 0 评论 -
redis源码剖析(1):基础数据结构SDS
目录1、SDS概述2、SDS的定义2.1 3.2版本和3.0版本的差别3、SDS数据结构解读4、SDS重点源码分析4.1 创建SDS4.2 SDS拼接4.3 SDS惰性空间释放5、总结1、SDS概述 redis没有直接使用c语言的字符串,而是自己定义了一个字符串数据结构:SDS(simple dynamic string)作为默认的...转载 2019-12-02 22:44:02 · 193 阅读 · 0 评论 -
redis源码剖析(4):基础数据结构skiplist
目录1、跳跃表的zset应用场景分析2、跳跃表的源码实现2.1跳跃表的基本数据结构2.2 跳跃表的结构图2.3 跳跃表的创建2.4 跳跃表的插入3、参考1、跳跃表的zset应用场景分析 众所周知Redis中每种基本类型都有2种或以上的底层实现,一般使用到ZSET时,我们会说它的实现是基于ziplist和skiplist实现的,这提供了多样性...原创 2019-12-02 17:57:59 · 143 阅读 · 0 评论 -
Redis教程:常见问题分析
1、redis的优势?性能很好 支持事务 支持丰富的数据类型 支持数据持久化2、redis为什么这么快?纯内存操作 单线程操作,避免了频繁的上下文切换 采用了非阻塞I/O多路复用机制图1redis线程模型3、 redis 的持久化机制? Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启...原创 2019-11-28 20:30:40 · 204 阅读 · 0 评论 -
Redis教程:基础知识
目录1、redis配置2、redis数据备份与恢复3、redis性能测试4、HyperLogLog 结构5、Redis发布订阅6、Redis 事务7、Redis 服务器参考:1、redis配置获取redis配置信息redis 127.0.0.1:6379> CONFIG GET *编辑配置redis 127.0.0.1:6379> ...原创 2019-11-19 23:32:16 · 121 阅读 · 0 评论