
redis
庞各庄学霸
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Centos 使用docker 搭建redis集群
三步走: 第一步:安装依赖包下载 第二步:启动多个容器 第三步:创建集群 详细步骤: 1. 安装依赖包: 1. 安装docker:https://blog.youkuaiyun.com/u011936655/article/details/81062343 2. 下载reids镜像:docker pull redis 3. 下载ruby镜像:docker pull ruby 2. ...原创 2020-05-07 10:52:29 · 653 阅读 · 1 评论 -
Redis 设计与实现---第十章:事件
文件事件:redis通过套接字与客户端进行连接,文件事件就是服务器对套接字操作对象的抽象,服务器与客户端他通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通讯操作。 Reds基于Reactor模式开发了自己的网络事件处理器:这个处理器被称为文件事件处理器(file event handler) 文件事件处理器使用I/O多路复用程序来同时监听多个套接字 ...原创 2020-03-21 17:43:15 · 232 阅读 · 0 评论 -
Redis 设计与实现---第九章:数据库持久化
SAVE (服务被阻塞)和 BGSAVE(子进程执行): BGSAVE时,再次执行SAVE或者BGSAVE会被拒绝,因为存在资源竞争,BGREWRITE会被延迟到BGSAVE执行完成后执行,虽然两者都会fork子进程执行,但是为了避免同时大量磁盘IO所以一个一个来。 数据加载: Dirty 和lastsave: Redis发服务周期性操作函数serverC...原创 2020-03-21 16:31:06 · 210 阅读 · 0 评论 -
Redis 设计与实现---第八章:数据库(二)
AOF 和 RDB、主从复制: 执行SAVE或者BGSAVE时,已经过期的键会被抛弃; redis服务器载入时,如果开启了RDB功能,主服务器载入时会判断rdb文件中的键是否已经过期,已过期的不载入,而从服务器会全部加载,但主从同步后又会一致,所以一般来讲,过期键对载入RDB文件的从服务器也不会造成影响 AOF文件的写入,过期键在被删除时会主动向AOF文件写入一条DE...原创 2020-03-21 11:38:37 · 133 阅读 · 0 评论 -
Redis 设计与实现---第八章:数据库(一)
Redis所有数据库都保存在服务器状态RedisServer结构的db数组中,db的每一个项都是一个redisDb结构,每一个redisDb结构代表一个数据库,启动服务时,根据配置database决定创建数据库的个数 select 命令的实现: 在服务器内部,客户端状态redisClient结构的db属性记录了客户端当前的目标数据库,这个属性是一个指向redisDb结构的指针 ...原创 2020-03-21 10:30:09 · 188 阅读 · 0 评论 -
Redis 设计与实现---第七章:对象
Redis并没有直接使用前面讲到的基本数据结构,而是将他们封装成基本对象使用,如字符串对象,列表对象,哈希对象,集合对象和有序集合对象。 使用对象的好处: 1. 根据对象判断是否可以执行给定的命令; 2. 可以针对使用场景为对象设置多种不同的数据结构实现,从而提升效率 3. Redis对象系统实现了基于引用计数的内存回收机制,基于引用计数实现了对象的...原创 2020-03-20 22:51:19 · 152 阅读 · 0 评论 -
Redis 设计与实现---第六章:压缩列表
压缩列表是列表键和hash键的底层实现原理之一(列表还可以使用链表,hash还可以使用字典),当。当。当。当键的个数不多,或者每个对应的值要么是小整数,要么是比较短的字符串时。 压缩列表时redis为了节约内存而开发的,是由一系列特殊的编码的连续内存块组成的顺序型数据结构,一个压缩列表可以包含多个节点(entry),每个节点保存一个字节数组或者一个整数值 由于prevous-en...原创 2020-03-20 16:37:59 · 189 阅读 · 0 评论 -
Redis 设计与实现---第五章:整数集合
整数集合是集合键的底层实现之一,当一个集合只包含整数值元素个数,并且这个集合的元素个数数量不多时,Redis采用整数集,也就是说每个数据类型可能会有多种数据实现,具体选用哪种是根据情况变化的。 整数集合的实现: 包含的类型:int16_t ,int32_t,int64_t,元素不重复 升级原则: 向上整体升级,不存在降级。时间复杂度为O(N) 例...原创 2020-03-20 16:07:29 · 226 阅读 · 0 评论 -
Redis 设计与实现---第四章:跳跃表
跳跃表,redis有序集合键的底层实现之一,一般来说效率媲美平衡树,但实现更简单,跳跃表支持平均O(logN),最坏O(N)复杂度的节点查找,还可以提供顺序性操作,通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 redis 仅在有序集合华为集群节点的内部数据中使用了跳跃表 ...原创 2020-03-20 15:51:36 · 139 阅读 · 0 评论 -
Redis 设计与实现---第三章:字典
Redis数据库构建k-v键值对时(任何类型),就是通过字典实现,也基本的hash键底层实现之一(当hash类型中键值比较多,或者键值元素比较长时) 但是键值多少以及长短的具体分界线是多少呢?? 字典的实现: Redis的字典使用hash表作为底层实现,一个hash表里面包含多个hash表节点,而每个hash表节点剧保存了字典中的一个键值对 链地址法解决冲突,就是当两个...原创 2020-03-20 15:35:40 · 168 阅读 · 0 评论 -
Redis 设计与实现---第二章:链表
C语言中并无链表结构,redis构建了自己的链表,链表在redis中使用非常广泛: 如列表键的实现,当列表键包含元素较少或者元素都比较短时使用压缩列表,反之键较多或者较长时使用链表。 发布订阅,慢查询,监视器等都使用了链表; redis服务器本身还是用链表来保存多个客户端的状态信息,以及构建客户端输出缓冲区(output buffer) ...原创 2020-03-20 14:23:17 · 160 阅读 · 0 评论 -
Redis 设计与实现---第一章:简单动态字符串
字符串对象: redis没有直接使用C语言传统字符串,而是自己封装了一种叫做:简单动态字符串(simple dynamic string,SDS)抽象类型,就是为了实现高效修改 C语言的字符串:是以空字符串结尾的字符数组 redis SDS长这样: 两个字符串差异对比: SDS依旧遵循空格结尾,这样很多方法可以复用,不必重复造轮子,字节数...原创 2020-03-20 11:41:09 · 149 阅读 · 0 评论 -
aredis 图示
原创 2020-02-20 21:41:26 · 296 阅读 · 0 评论