22-9-18学习笔记-MySQL和Redis

7 篇文章 0 订阅
5 篇文章 0 订阅

redis开发与运维读后感

redis为什么运行快

1,redis是基于内存的数据库

2,redis是单线程,避免了线程切换的开销

3,redis是IO多路复用的机制

redis中五种数据结构

1,string:key为string,value可以为五种数据类型,string如果是整数则为int类型,如果字符串长度小于39,则string为embstr,大于39则为raw。embstr和raw的区别表现为,embstr在stringobject初始化中只需要分配一次内存即可且stringobject和sds是连续的,而raw在stringobject中需要分配两次内存,且sds和stringobject不连续。sds的数据结构有三个字段,已使用的长度,未使用的长度,字节数组的指针。

2,hash结构,底层是ziplist或hashtable,数据量少且数据小的时候可以采用ziplist,否则采用hashtbale。ziplist底层的node节点的格式是:上一个节点的大小+本节点的编码和长度+数据。

3,list结构,采用ziplist或者linkedlist的数据结构,在后序的版本中出现了聚集前两者数据结构有点的quicklist。

4,set结构:采用ziplist或者hashtable的数据结构。

5,zset结构:采用ziplist或者skiplist的数据结构,skiplist是一种多层链表的数据结构。

redis中小功能大用处

1,pipeline功能:管道作用,可以将一些命令打包一次发送刚给redis,减少命令传输的次数带来的时延。pipeline和原生的批操作命令的区别,pipeline是非原子性的。

2,事务,multi和exec,会将多个命令存放在一个队列中,在执行exec后开始进行执行,不会进行回滚。

3,lua脚本的优点:可以将一批命令发送给redis并原子性的执行。

redis的持久化

1,rdb持久化:主线程通过fork一个子线程,由子线程对全量数据进行拍一个快照,生成rdb文件并进行持久化。优点:进行全量复制,易于主从节点之间复制,读取rdb文件的效率高。

2,aof持久化:将修改的内容写入到aof buffer中,在配置一定的规则将aof buffer中的数据写到aof文件中。配置规则为always的时候,每次都会将aof buffer中的数据用过fsync的方式写入磁盘,配置为everysecd的时候,每次将aof buffer中的数据write到磁盘缓冲区中,由fsync每隔一秒写入到磁盘中。配置为no的时候,每次将aof buffer文件写入到磁盘缓冲中,由操作系统调用写入磁盘。aof的重写:aof的文件会不断变大,通过aof重写消除一些冗余的命令。aof的优点:可以进行实时持久化,缺点是:读取aof文件缓慢。

redis复制

复制流程:从节点需要复制主节点中的数据,分为两种类型,全量复制和部分复制,全量复制一般表示为从节点首次连接主节点的时候,部分复制较少了全量复制的开销。流程:1,从节点输入salveof命令保存了主节点的ip和端口。2,从节点连接主节点,并验证auth。3,主节点进行持久化数据,rdb。3,主节点将数据rdb文件传输给从节点。4,从节点读取rdb文件。5,主节点的新来的命令持续的发送给从节点。

redis内存管理

1,内存管理:第一:过期数据清理,惰性清除和定期清除,第二:内存溢出清理,通过LRU算法进行内存淘汰。

2,内存优化:第一:redisobject数据结构设计的优点。第二:公共缓冲池,一般存放小整型数据。第三:string的优化。第四:编码优化,通过ziplist和quicklist等等。

redis哨兵

1,原理:哨兵的存在为主从架构实现自动故障转移,提高了系统的可靠性。

2,三个定时任务;第一,sentinel会每隔10s会向master和salve发送info,通过master执行info,sentinel就能得知有多少从节点的上下线。第二,所有的sentinel会订阅master中的sentinel-hello的channel,保证每隔sentinel通过channel去监听master的信息,并知道sentinel的上下线。第三,sentinel会向sentinel、master、slave发送ping包,来保证确认链接是否通路。

3,主观下线和客观下线:主观下线表现为,sentinel认为主节点或者从节点无法连通了。客观下线表现为:当主节点被主观下线后,sentinel会向其他sentinel进行确认,当一半以上的节点都主观下线了master之后,会进行客观下线master。

4,sentinel的选举:原理是raft算法记性选举,选举出一个sentinel负责故障转移。

5,故障转移:选举出master,sentinel会按照一定的规则选举出salve充当master,选举规则有:salve的偏移量尽可能小,runid也尽可能小。

redis分布式

1,分布式与集群的区别,分布式类似于分片,每个结点存储的是部分数据。

2,采用的哈希槽的方式实现一致性哈希。

3,每个节点分配了一部分哈希槽,节点中保着哈希槽的映射。

redis缓存

1,缓存穿透,数据不存在,解决方案:在redis层设置空值或者配置布隆过滤器。

2,缓存击穿(热点key重建):redis中单个key突然失效了,造成大量的访问打到mysql上。解决方案:设置key不失效,或者通过加锁的方式重建key。

3,缓存雪崩:大量的key失效或者是服务器垮掉:可以采用高可用的方式,sentinel或者cluster,采用服务降级的方式,提前演练做好预备方案。

MySQL技术内幕读后感

InnoDB的关键特性

插入缓存:条件是针对于非主键索引,插入新的数据时,判断buffer pool中是否存在数据页,如果存在直接插入,不存在的话,直接将数据插入到insert buffer中并直接返回(不加insert buffer的时候,需要将插入的页进行读取到bufffer pool中)

两次写:保证了innodb的可靠性,是指脏页进行刷盘的时候,会将页面先保存在共享表空间区域,在进行脏页刷盘,当脏页刷盘出现故障的时候,能保证数据不丢失,共享表空间是顺序写,比较快,相比耗时可以不计算。

自适应哈希索引:在buffer pool中对一些等值查询建立哈希索引,为了加快查询的速率。

异步IO:用户可以发送多个IO,不需要等待一个IO结束之后才能发下一个,多个IO还可以进行合并。

刷新邻接页:刷新脏页的时候把相邻的脏页一并进行刷盘。

三大日志:

binlog:二进制日志,分为statement记录原逻辑语句和row记录语义两种,主要用于复制和恢复,一般的事务执行commit之后就会进行写binglog日志。

redolog:保证了事务的持久化功能,一般是对数据逇更改,显示是写redolog再写磁盘,redolog文件是采用循环写入的,redolog的写入配置,当为0的时候,有master thread的刷新,当为1的时候,会听过fsync刷入磁盘,当为2的时候,会将redolog刷到磁盘缓存,有操作系统保证写入磁盘。

undolog:保证了事务的原子性,他记录了一个事务的历史版本数据,可方便进行回滚,undo log存放在共享表空间当中,undo log是MVCC功能的支柱,可以存在一致性非锁定读。undolog分为insert undolog和update undolog,insert undolog在事务提交之后直接删除,update undolog在事务提交之后会放入undolog的列表中,等待purge线程进行清除。

索引

1,索引的分类:主键索引,唯一索引,普通索引

2,如何进行优化

优化步骤:

1,考虑索引,先产看慢查询日志定位到语句,2,在通过expalin查询执行计划,3,在看看索引的情况。4,索引添加的技巧,一般是可以加联合索引避免filesort,覆盖索引和索引下推可以避免进行回表,可以用force强制指定索引。

1,考虑查询优化,尽可能的减少查询的次数和减少传输的数据量。

1,考虑在buffer pool中开启自适应哈希索引。

1,考虑何合适的存储引擎。

1,考虑分区分表。

1,考虑主从架构。

 

1,全局锁,全局读锁,锁住数据库。

2,表锁,普通表锁,元数据锁,意向锁

3,行锁,普通行锁,范围锁,邻键锁。

事务

事务的隔离级别:读未提交,读已提交,可重复读,串行化读。

事务的四大特性:ACID

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿联爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值