Redis安装以及入门认识

2 篇文章 0 订阅

redis安装教程(Linux+windows)

什么叫做内置缓存?存放在jvm内置缓存中,比如oscahe   ehcahe,在内置缓存中查询不到,然后再查询数据库。

什么叫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宕机之后数据会失效吗?-------------


8.---------Session共享的解决方案-------------

1.spring-session+redis(最为靠谱)

2.使用token重写session

3.存放在数据库中,每次查询的时候访问数据库(浪费资源)

4.nginx情况下,使用路由的ip绑定策略(无法减轻单台服务器的压力)

5.tomcat配置session共享(占用资源,配置麻烦)

6.使用cookie(不安全)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值