文章目录
目录
前言
Redis数据库的学习
一、Redis能干嘛?
1.主流功能和应用
- 分布式换粗,挡在mysql数据库之前的带到护卫
- 内存存储和持久化(RDB+AOF) redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务
- 高可用架构搭配
- 单机
- 主从
- 哨兵
- 集群
- 缓存穿透,击穿,雪崩
- 分布式锁
- 队列
- 排行版+点赞
2.Redis的优势?
- 性能极高-Redis能读的速度是110000次/秒,写的速度是81000次/秒
- Redis数据类型丰富,不仅仅能支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
- Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
- Redis支持数据的备份,即master-slave模式的数据备份
二、Redis持久化
- RDB是啥能干啥?
- 是什么?在指定的时间间隔内,执行数据集的时间点快照
- 能干嘛?在指定时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot内存快照,它恢复时再将硬盘快照文件直接读回到内存里
- 一锅端:Redis的数据都在内存中,也保存备份时它执行的是全量快照,也就是说,把内存中的所有数据都记录到磁盘中,一锅端
- RDB保存的是dump.rdb文件
- 优点:
- 适合大规模的数据恢复
- 按照业务定时备份
- 对数据完整性和一致性要求不高
- RDB文件在内存中的加载速度要比AOF快的多
- AOF是啥能干啥?
- 以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作.
- 默认情况下,redis是没有开启AOF服务的,需要配置appendonly yes
- AOF保存的是appendonly.aof文件
- 优势:能更好的保护数据不丢失,性能高,可做紧急恢复
- 劣势:相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb,aof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同
三、Redis事务
-
-
可以一次执行多个命令,本质是一组命令的集合,一个事务中的所有命令都会序列化,按顺序地穿行执行而不会被其他命令插入,不许加塞
-
一个队列中,一次性,顺序性,排他性的执行一系列命令
-
-
特性:
-
单独的隔离操作:Redis的事务仅仅是保证事务里的操作会被连续独占的执行,redis命令执行是单线程架构,在执行完事务内所有指令前是不肯恩再去同时执行其他客户端请求的.
-
没有隔离级别的概念:因为事务提交前任何指令都不会被实际执行,也就不存在"事务内的查询要看到事务里的更新,在事务外查询不能看到"这种问题了
-
不保证原子性:Redis的事务不保证原子性,也就是不保证所有指令同时成功或者同时失败,只有决定是否开始执行全部指令的能力,没有执行到一半进行回滚的能力
-
排他性:Redis会保证一个事务内的命令依次执行,而不会被其他的命令插入
-
四、Redis管道
- 产生原因:如果同时需要处理大量的命令,那么就要等待上一条命令应答后再执行,这中间不仅仅多了RTT,而且频繁调用系统IO,发送网络请求,同事需要redis调用多次read()和write()系统方法,系统方法会将数据从用户态转移到内核态,这样就会对进行上下文有比较大的影响了,性能不太好.
- 管道的优点(pipeline)可以一次性发送多条命令给服务端,服务端依次处理完毕后,通过一条响应依次性将结果返回,通过减少客户端与redis的通信次数来实现降低往返延时时间.pipeline实现的原理是队列,先进先出特性就保证数据的顺序性.
总结
参考和学习文档:
感谢尚硅谷springcloud教程以上内容均参考学习尚硅谷教程