上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页
摘要: 由一个或多个Sentinel实例组成的Sentinel系统,监测任意多主从服务器,一旦某个主服务器下线并超过等待时间,会将其下的某个从服务器上升为主服务器,对其余从服务器发送复制命令,将它们归属到新的主服务器下的从服务器,并且会继续监视下线的服务器,等其重新上线后,将其设置为新主服务器下的从服务器。 阅读全文
posted @ 2021-03-02 17:39 walker993 阅读(61) 评论(0) 推荐(0)
摘要: 使用SLAVEOF命令或者设置slaveof选项,让一个服务器复制另一个服务器 15.1 旧版复制功能的实现 Redis的复制功能分为同步和命令传播 同步操作用于将从服务器的数据库状态更新为主服务器的数据库状态 当主服务器数据库状态被更改,会将执行的写命令传给从服务器执行 15.1.1 同步 客户端 阅读全文
posted @ 2021-02-28 16:52 walker993 阅读(65) 评论(0) 推荐(0)
摘要: 14.1 命令请求的执行过程 14.1.1 发送命令请求 客户端将用户输入的命令转化成协议格式,连接到服务器的客户端套接字,将命令请求发送给服务器 14.1.2 读取命令请求 当客户端套接字因为客户端的写入而可读时,产生文字事件,服务器调用命令处理器处理 读取套接字中的命令,存储到客户端状态输入缓冲 阅读全文
posted @ 2021-02-27 16:48 walker993 阅读(40) 评论(0) 推荐(0)
摘要: 12.1 文件事件 文件事件分为写事件(AE_WRITABLE)和读事件(AE_READABLE) 采用I/O复用程序监听多个套接字,根据套接字当前执行的任务关联事件处理器。当一个套接字准备好执行应答、读取、写入、关闭操作时,会产生对应的文件事件,文件事件分派器会将文件事件交给对应的事件处理器。 同 阅读全文
posted @ 2021-02-26 11:57 walker993 阅读(47) 评论(0) 推荐(0)
摘要: AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。 11.1 AOF持久化的实现 AOF持久化功能的实现可以分为命令追加、文件写入、文件同步三个步骤 11.1.1 命令追加 当AOF持久化功能打开时,服务器执行完一个写命令,会在服务器状态的aof_buf缓冲区的末尾添加被执行的 阅读全文
posted @ 2021-02-25 22:40 walker993 阅读(52) 评论(0) 推荐(0)
摘要: 将Redis中的非空数据库和其中保存的键值对称为数据库状态。RDB持久化即将内存中保存的数据库状态写入到RDB文件中,保存在磁盘上。 10.1 RDB文件的创建与载入 RDB文件的创建 SAVE命令:阻塞服务器进程,期间不再处理请求,直到RDB文件创建完毕 BGSAVE命令:派生一个子进程(fork 阅读全文
posted @ 2021-02-25 21:00 walker993 阅读(51) 评论(0) 推荐(0)
摘要: 9.1 服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中。 struct redisServer{ //一个数组,保存着服务器中的所有数据库 redisDb *db; //服务器的数据库数量 int denum; } denum属 阅读全文
posted @ 2021-02-24 22:16 walker993 阅读(41) 评论(0) 推荐(0)
摘要: Redis中的对象: 字符串对象 列表对象——压缩列表或双端链表 哈希对象——压缩列表或字典 集合对象——整数集合或字典 有序集合对象——压缩列表或跳表+字典 每个对象针对不同的使用场景选择底层实现,并使用引用计数器决定对象的回收,某些条件下可以通过引用计数器实现共享。 8.1 对象的类型和编码 R 阅读全文
posted @ 2021-02-23 22:55 walker993 阅读(43) 评论(0) 推荐(0)
摘要: 当一个列表键只包含少量的列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,Redis就会使用压缩列表作为列表键的底层实现。设计的目的是为了节省内存。作为列表键和哈希键的实现之一。 7.1 压缩列表的构成 zlbytes:代表了整个压缩列表占用的内存字节数 zltail:表尾距表头的 阅读全文
posted @ 2021-02-23 21:02 walker993 阅读(38) 评论(0) 推荐(0)
摘要: 当一个集合只包含整数,且集合的元素数量不多时,Redis会使用整数集合作为底层实现。 6.1 整数集合的实现 可以保存int16_t、int32_t或者int64_t的整数值。并且保证集合中不会出现重复的元素。 typedef struct intset{ //编码方式 uint32_t encod 阅读全文
posted @ 2021-02-21 17:00 walker993 阅读(202) 评论(0) 推荐(0)
上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页