redis分享PPT材料
上次在公司类做了一个redis分享,特别想把ppt上传上来,好像博客园不支持,那就截图把
1.简介
redis是什么:
redis是一个nosql(not only sql不仅仅只有sql)数据库,翻译成中文叫做非关系型型数据库
为什么使用
1.大量数据的写处理(磁盘I/O)
2.为有数据更新的表做索引或表结构变更
3.对简单查询需要快速返回结果的处理
4.字段不固定时应用(数据结构为半结构化数据
redis分类
Nosql分类:列式数据库,键值数据库,文档数据库,图数据库redis是一个内存中的数据结构存储系统key-value形式
2.redis特点
为什么速度这么快:
1.Redis采用了单线程的模型,减少了线程的上下文切换和竞争
2.Redis是纯内存数据库,IO使用的是多路复用,使一个线程来轮询描述符,减少了线程上下文的切换,
持久化
持久化功能有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数 据恢复
3.redis基础类型
http://www.redis.cn/ 更多可以参考官网
4.redsi事务 管道
当Redis使用只增文件(AOF:Append-only File)时,Redis能够确保使用一个单独的write(2)系统调用,这样便能将事务写入磁盘。然而,如果Redis服务器宕机,或者系统管理员以某种方式停止Redis服务进程的运行,那么Redis很有可能只执行了事务中的一部分操作。Redis将会在重新启动时检查上述状态,然后退出运行,并且输出报错信息。使用redis-check-aof工具可以修复上述的只增文件,这个工具将会从上述文件中删除执行不完全的事务,这样Redis服务器才能再次启动。
5.RDB持久化
(1)Redis 使用 fork 函数复制一份当前进程的副本(子进程)
(2)父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入硬盘中的临时文件。
(3)当子进程写入完所有数据后会用该临时文件替换旧的RDB文件,至此,一次快照操作完成。
(1)缺点:使用 RDB 方式实现持久化,一旦 Redis 异常退出,就会丢失最后一次快照以后更改的所有数据。这个时候我们就需要根据具体的应用场景,通过组合设置自动快照条件的方式来将可能发生的数据损失控制在能够接受范围。如果数据相对来说比较重要,希望将损失降到最小,则可以使用 AOF 方式进行持久化。
(2)优点: RDB 可以最大化 Redis 的性能:父进程在保存 RDB 文件时唯一要做的就是fork 出一个子进程,然后这个子进程就会处理接下来的所有保存工作,父进程无需执行任何磁盘 I/O 操作。同时这个也是一个缺点,如果数据集比较大的时候,fork 可以能比较耗时,造成服务器在一段时间内停止处理客户端的请求
AOF持久化
(1)appendfsync always 每次执行写入都会进行同步这个是最安全但是是效率比较低的方式
(2)appendfsync everysec 每一秒执行
(3)appendfsync no 不主动进行同步操作,由操作系统去执行,这个是最快但是最不安全的方式
使用 Redis 附带的 redis-check-aof 程序,对原来的 AOF 文件进行修复。
重启 Redis 服务器,等待服务器载入修复后的 AOF 文件,并进行数据恢复
修复出错的 AOF 文件
6.主从复制
注意:如果多个Slave断线了,需要重启的时候,因为只要Slave启动,就会发送sync请求和主机全量同步,当多个同时出现的时候,可能会导致Master IO剧增宕机
7.哨兵模式
用文字描述一下故障切换(failover)的过程。假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。这样对于客户端而言,一切都是透明的
上次在极客时间上的一节redis课程,里面是说如如何更好的使用redis,我感觉很棒
作者:做梦的人(小姐姐) 出处:https://www.cnblogs.com/chongyou/ 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。 如果文中有什么错误,欢迎指出。以免更多的人被误导。 微信号:18582559217 |