Redis安装以及入门认识
2018-01-22 15:33
246 查看
什么叫做内置缓存?存放在jvm内置缓存中,比如oscahe ehcahe,在内置缓存中查询不到,然后再查询数据库。
什么叫NOSQl:非关系型数据库。
Redis 和 Memcached的区别?redis可以持久化,高可用,灾难备份,
Redis:也叫远程字典服务器,也叫分布式的内存数据库,减轻数据库访问压力,redis是内存数据库,要比io数据库效率要高。
(2) 支持丰富数据类型,支持string,list,set,sorted set,hash
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
(2).NOSQL中的CAP: C强一致性(例如:评论点赞数前后端必须一样), A可用性(只要保证网站别崩溃就行), P分布式容忍性
CAP只能三选二: P是分区容错性是我们必须需要实现的,我们只能在一致性与可用性之间进行权衡,没有NOSQL系统能够同时满足这一点
CA:主要是指传统数据库 AP:大多数的网站选择 CP:Redis,Mongodb
(3).BASE:就是为了解决关系数据库一致性引起的问题,降低可用性而提出的解决问题.
(4).分布式+集群: 分布式:不同的多台服务器机器部署不同的服务模块 集群:不同的多台服务器部署相同的服务模块
行话也叫snapshot快照,它恢复时是将快照的内容读入内存.
保存的是dump.rdp文件
Fork:重新拷贝一个线程,与原线程相同,主要是备份dump.rdp文件,此文件应该和原dump.rdp文件处于不同的主机
如何触发RDB快照:(1)根据默认的配置来进行保存
1分钟内改了1万次
5分钟改了10万次
15分钟内改了1次
(2)通过save命令
(3)执行flushall,但是执行之后文件是空的,没有意义
RDB的 优势:适合大规模的数据恢复 劣势:并不是实时存储,最后一次的备份可能有丢失,Fork效率有问题.
aof:在配置文件中将appendonly打开就可以启用这种方式,是将所有的操作记录全部记录下来aof文件如果记录错误,会有相关的命令去检查文件,会将相应的错误记录去掉.默认的出厂设置是每秒中保存一次,也就是最多丢失一秒钟的数据,最好将aof的文件也备份一份.
劣势:每次发生数据变化就会立即记录到磁盘,性能较差,但是数据的完整性较好
处理:当aof文件大到一定地步的时候,redis会进行压缩也叫重写,一般是默认64M的之后启动.
常用四种方式:
一主二仆 : 一个master主要进行写的操作,两个salve主要进行读的操作
薪火相传 : 一个master挂掉之后,将配置的salve转换成master角色
反客为主 : 使当前数据库停止与其它数据库的同步,转成主数据,需要手动通过命令来执行
哨兵模式 :目前主要的方式 反客为主的自动版 使用投票选举的方式选择一个master,底层会根据机器的情况在计算
以上四种方式在复制的时候又会分为全量复制和部分复制
1. redis什么时候会发生全量复制?
a) redis slave首启动或者重启后,连接到master时
b) redis slave进程没重启,但是掉线了,重连后不满足部分复制条件
2. redis什么时候会发生部分复制?
b) redis slave进程没有重启,但是掉线了,重连了master(因为slave进程重启的话,run id就没有了)
c) redis slave保存的run id与master当前run id一致
d) redis slave掉线期间,master保存在内存的offset可用,也就是master变化不大,被更改的指令都保存在内存
3. redis进程重启后会发生全量复制还是部分复制?
a) master重启时,run id会发生变化
b) slave重启时,run id会丢失
答:很显然,会发生全量复制,因为部分复制的条件之一run id已经不能满足
4.当全量复制或者同步复制完毕,增量是如何更新到slave的?
答:通过流式的命令更新,此时master就是slave的client,这样去理解。
5. run id如何查看?
答:通过info server命令查看
6.如果master和salve都宕机之后,应该怎么办?
使用keepalived监控,自动帮你重启,如果一直重启失败,会以邮件的形式通知.
常用命令:
(1)MUTIL:标记一个事务块的开始。
(2)EXEC: 执行所有事务块内的命令。
(3)DISCARD :取消事务,放弃执行事务块内的所有命令。
(4)WATCH key [key ...] :监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
(5)UNWATCH : 取消 WATCH 命令对所有 key 的监视。
redis的事物执行步骤
(1)开始事务。
(2)命令入队。
(3)执行事务。
redis事物的五大特性
1.正常执行 : 就是按部就班执行一系列的命令
2.放弃事物 : 放弃一系列的操作
3.全体连坐 : 当操作命令有一个错误的,所有队列中的相关操作全部放弃,一次性的全部失败
4.冤头债主 : 事务中任意命令执行失败,其余的命令依然被执行(3和4的区别 相当与运行时异常和非运行时异常)
5.watch监控 :我们先说一下悲观锁和乐观锁
悲观锁(Pessimistic Lock), 每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁。比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。
乐观锁(Optimistic Lock),每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。
同样的watch监控就相当于乐观锁,当提交时版本号小于当前数据库的版本号时就会报出异常.
当发现宕机之后,哨兵机制会重新选择一个master,如果所有的redis宕机的话,会使用kepalive进行心跳检测,帮助我们自动重启,如果尝试多次仍然重启不来,就会给我发送邮件通知。
什么叫NOSQl:非关系型数据库。
Redis 和 Memcached的区别?redis可以持久化,高可用,灾难备份,
Redis:也叫远程字典服务器,也叫分布式的内存数据库,减轻数据库访问压力,redis是内存数据库,要比io数据库效率要高。
1.---------使用redis有哪些好处?-------------------
(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都很快(2) 支持丰富数据类型,支持string,list,set,sorted set,hash
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
2.----------redis的应用场景----------------
token生成,session共享,分布式锁,自增id(redis有一个方法自动获取),验证码2.----------分布式数据库中CAP原理CAP+BASE----------------
(1).传统ACID是什么?原子性,一致性,隔离性,持久性(2).NOSQL中的CAP: C强一致性(例如:评论点赞数前后端必须一样), A可用性(只要保证网站别崩溃就行), P分布式容忍性
CAP只能三选二: P是分区容错性是我们必须需要实现的,我们只能在一致性与可用性之间进行权衡,没有NOSQL系统能够同时满足这一点
CA:主要是指传统数据库 AP:大多数的网站选择 CP:Redis,Mongodb
(3).BASE:就是为了解决关系数据库一致性引起的问题,降低可用性而提出的解决问题.
(4).分布式+集群: 分布式:不同的多台服务器机器部署不同的服务模块 集群:不同的多台服务器部署相同的服务模块
3.---------redis持久化 主要两个 rdb 和 aop--------
RDB(Redis DataBase)定义: 在特定的时间段内将内存中的数据集快照写入磁盘行话也叫snapshot快照,它恢复时是将快照的内容读入内存.
保存的是dump.rdp文件
Fork:重新拷贝一个线程,与原线程相同,主要是备份dump.rdp文件,此文件应该和原dump.rdp文件处于不同的主机
如何触发RDB快照:(1)根据默认的配置来进行保存
1分钟内改了1万次
5分钟改了10万次
15分钟内改了1次
(2)通过save命令
(3)执行flushall,但是执行之后文件是空的,没有意义
RDB的 优势:适合大规模的数据恢复 劣势:并不是实时存储,最后一次的备份可能有丢失,Fork效率有问题.
aof:在配置文件中将appendonly打开就可以启用这种方式,是将所有的操作记录全部记录下来aof文件如果记录错误,会有相关的命令去检查文件,会将相应的错误记录去掉.默认的出厂设置是每秒中保存一次,也就是最多丢失一秒钟的数据,最好将aof的文件也备份一份.
劣势:每次发生数据变化就会立即记录到磁盘,性能较差,但是数据的完整性较好
处理:当aof文件大到一定地步的时候,redis会进行压缩也叫重写,一般是默认64M的之后启动.
4.--------redis发布订阅-------
只需要了解即可,真正的企业不会用它做消息中间间,他的主要功能还是分布式缓存数据库5.-------redis复制----------
主从复制,读写分离,高可用,集群。常用四种方式:
一主二仆 : 一个master主要进行写的操作,两个salve主要进行读的操作
薪火相传 : 一个master挂掉之后,将配置的salve转换成master角色
反客为主 : 使当前数据库停止与其它数据库的同步,转成主数据,需要手动通过命令来执行
哨兵模式 :目前主要的方式 反客为主的自动版 使用投票选举的方式选择一个master,底层会根据机器的情况在计算
以上四种方式在复制的时候又会分为全量复制和部分复制
1. redis什么时候会发生全量复制?
a) redis slave首启动或者重启后,连接到master时
b) redis slave进程没重启,但是掉线了,重连后不满足部分复制条件
2. redis什么时候会发生部分复制?
b) redis slave进程没有重启,但是掉线了,重连了master(因为slave进程重启的话,run id就没有了)
c) redis slave保存的run id与master当前run id一致
d) redis slave掉线期间,master保存在内存的offset可用,也就是master变化不大,被更改的指令都保存在内存
3. redis进程重启后会发生全量复制还是部分复制?
a) master重启时,run id会发生变化
b) slave重启时,run id会丢失
答:很显然,会发生全量复制,因为部分复制的条件之一run id已经不能满足
4.当全量复制或者同步复制完毕,增量是如何更新到slave的?
答:通过流式的命令更新,此时master就是slave的client,这样去理解。
5. run id如何查看?
答:通过info server命令查看
6.如果master和salve都宕机之后,应该怎么办?
使用keepalived监控,自动帮你重启,如果一直重启失败,会以邮件的形式通知.
6.---------redis事物--------------
redis对事物的支持是部分支持.常用命令:
(1)MUTIL:标记一个事务块的开始。
(2)EXEC: 执行所有事务块内的命令。
(3)DISCARD :取消事务,放弃执行事务块内的所有命令。
(4)WATCH key [key ...] :监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
(5)UNWATCH : 取消 WATCH 命令对所有 key 的监视。
redis的事物执行步骤
(1)开始事务。
(2)命令入队。
(3)执行事务。
redis事物的五大特性
1.正常执行 : 就是按部就班执行一系列的命令
2.放弃事物 : 放弃一系列的操作
3.全体连坐 : 当操作命令有一个错误的,所有队列中的相关操作全部放弃,一次性的全部失败
4.冤头债主 : 事务中任意命令执行失败,其余的命令依然被执行(3和4的区别 相当与运行时异常和非运行时异常)
5.watch监控 :我们先说一下悲观锁和乐观锁
悲观锁(Pessimistic Lock), 每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁。比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。
乐观锁(Optimistic Lock),每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。
同样的watch监控就相当于乐观锁,当提交时版本号小于当前数据库的版本号时就会报出异常.
6.---------redis宕机之后解决方案--------------
一般我们会用哨兵模式+keepalive当发现宕机之后,哨兵机制会重新选择一个master,如果所有的redis宕机的话,会使用kepalive进行心跳检测,帮助我们自动重启,如果尝试多次仍然重启不来,就会给我发送邮件通知。
7.---------redis宕机之后数据会失效吗?-------------
相关文章推荐
- Redis入门简述以及下载安装
- Redis的安装以及使用入门
- _00012 Redis 安装以及快速入门之二(JavaAPI,一致性哈希)
- _00011 Redis 安装以及快速入门之一(Redis安装)
- Docker入门实践笔记(三)一篇文章搞懂Docker下安装Redis,以及Redis与SpringBoot整合
- 初步认识Redis以及Redis的安装部署
- umbraco入门(一)——认识以及安装umbraco(图解)
- Redis简介以及安装
- laravel5.*安装使用Redis以及解决Class 'Predis\Client' not found和Fatal error: Non-static method Redis::set() cannot be called statically错误
- Redis安装以及基本数据类型
- redis的安装以及增添到window服务里面
- Redis 入门安装(Linux)
- docker安装以及redis在docker中的应用实例
- redis单机版的安装部署以及java实现
- 【redis学习(二)】手把手教你windows下的redis安装以及集群搭建
- xgboost入门以及windows下安装及使用二
- Ant, JUnit以及Sonar的安装+入门资料
- Redis介绍以及安装(Linux)
- mac下安装redis以及redis扩展-----xampp
- redis 的安装启动 与redis入门案例