美文网首页
Redis学习笔记

Redis学习笔记

作者: Moine0828 | 来源:发表于2019-07-18 16:14 被阅读0次

看书时的一些简单总结。每一个知识点展开都可以单写一篇了。。。

Redis数据结构数据类型

redis底层的数据结构并非c语言字符串,而是自己定义的类型SDS。与字符串不同的是,除了存储字符串内容,一个SDS对象还包含了一段free空间和一个len属性。free空间是为了redis更好的实现空间预分配和惰性空间释放,字符串小于1MB时,free空间与字符串空间一样,大于1MB时,free为1M。

Redis选举机制

哨兵机制:启动多个哨兵对集群进行监控。发现异常就报告给管理员,或自动进行故障迁移。将失效的Master的其中一个Salve选举为新的Master。
从主服务器的从服务器中选出一个从服务器作为新的主服务器。选点的依据依次是:网络连接正常->5秒内回复过INFO命令->10*down-after-milliseconds内与主连接过的->从服务器优先级->复制偏移量->运行id较小的。选出之后通过slaveif no ont将该从服务器升为新主服务器
当主服务器宕机之后,从服务器切换成主服务器的时间内,服务是不可用的

Redis集群

Cluster MEET IP host 命令用于将指定的ip,host所属的节点添加到当前的集群中。例如客户端连接7000节点,向7000节点发送 CLUSTER MEET 127.0.0.1 7001指令,则7000与7001握手之后,7001加入7000所在的集群中。
redis一个集群节点与一个普通的redis服务器并没有太大的不同。

Redis通讯协议

redis底层是通过tcp来进行通信的。。。所以通信其实非常简单,jedis客户端也只是将socket通信做一个封装。
命令发送格式:
*<参数数量>CRLF
$<参数1的字节数量>CRLF
<参数1>CRLF
$<参数2的字节数量>CRLF
<参数2>CRLF
...
例如要 set name xxx
最终传输的协议为:*3\r\n$3\r\nset\r\n$4\r\nname\r\n$5\r\nxxx\r\n
命令回复格式:
状态回复,第一个字节为+ 例如+OK\r\n
错误回复,第一个字节为- 例如-NoSuchKey\r\n
整数回复,第一个字节为: 例如:1\r\n
批量回复,第一个字节为$ 例如 $3\r\nxxx\r\n
多条批量回复,第一个字节为* *2\r\n$3\r\nxxx\r\n$3\r\nxxx\r\n
了解了协议之后,可以尝试自己手动实现一个。

命令执行器

  1. Redis客户端向服务端发送请求大致分为这几个过程:
  2. 客户端输入命令
  3. 命令被转成协议
  4. 协议被发送给服务器
  5. 可读套接字建立,服务器读取套接字
  6. 服务器分析输入缓冲区的内容,对协议进行分析
  7. 服务器提取出命令的内容,将参数和参数个数保存到redisClient的 argv和argc参数中
  8. 调用命令执行器
  9. 命令执行器根据第一个参数从命令表中查找对应的redisCommand, 命令表的key就是客户端传来的set,del等命令
  10. 从redisCommand中解析出对应的执行函数,参数等
  11. 执行命令之前进行一系列的校验,例如客户端状态的cmd指针是否指向NULL,或者指向arity属性则需要校验参数个数,客户端身份验证是否通过,服务器是否处于SUBSCRIBE订阅模式,是否处于执行lua脚本并且阻塞的状态,是否正在执行事务等等, 校验若通过,调用命令的实现函数
  12. 实现函数将返回值写到客户端状态的输出缓冲区里
  13. 进行后续操作,例如开启了AOF持久化则将命令写到AOF文件,如果正在进行复制则将命令传播到从服务器
  14. 当客户端的套接字变为可写状态,将输出缓冲区里的命令回复发送到客户端

相关文章

  • 【Redis】Redis学习笔记(五)jedis(JedisCl

    redis系列文章目录 redis学习笔记(一)redis3.2.5集群安装与测试 redis学习笔记(二)Jed...

  • Redis学习笔记:事务

    Redis学习笔记:事务 原文链接:Redis学习笔记:事务 一、事务的描述 和MySQL一样,Redis中也有事...

  • Redis 参数

    Redis Redis 学习笔记 II 常见参数配置

  • 2018-11-12

    Redis学习笔记 Redis在在线测试 Redis官网 REmote DIctionary Server(Red...

  • Redis 初识

    初识 Redis 《 Redis 开发与运维》的学习笔记,希望大家多多指导。 什么是 Redis Redis 的全...

  • Redis—Redis入门安装及基础数据的知识

    Redis学习笔记所有文章:https://www.jianshu.com/nb/33547142 Redis安装...

  • 数据库Redis在Windows上的使用教程

    Redis学习笔记----Redis在windows上的安装配置和使用 Redis简介 redis是一个key-v...

  • Redis 学习笔记

    Redis 学习笔记 原文:硬核!16000 字 Redis 面试知识点总结,建议收藏! Redis 基础知识 R...

  • Redis 数据类型

    Redis Redis 学习笔记 II Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、...

  • Redis 安装

    Redis Redis 学习笔记 I Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可...

网友评论

      本文标题:Redis学习笔记

      本文链接:https://www.haomeiwen.com/subject/lqwllctx.html