Redis-5-实际应用

一、session丢失

本地请求不同服务器,session会覆盖

Redis-5-实际应用

二、分布式SpringSession共享

之前的方法:session广播

Spring-Session:把session数据存到redis中,每次getSession不去session中找,去redis中找,就不会丢了

token:客户端携带token,分布式使用

2.1添加依赖

也是个小框架

Redis-5-实际应用

2.2 使用

在启动类上打个注解即可,会自动将session存入redis

Redis-5-实际应用

Redis-5-实际应用

三、Redis秒杀

3.1商品数量:超卖

Redis-5-实际应用

解决方法:不用加锁,使用redis可以控制数量

3.2防止用户重复下单

Redis-5-实际应用

3.3抢到后添加商品

四、秒杀测试

4.1控制超卖

单进程本身没问题,多服务器多进程也没问题,不需要控制。下图leftpop为原子操作,一步执行,不会出问题;如果设置个number为5000,抢完了set回去,就会出问题,因为是多步执行,会被打断。

模拟秒杀5000个商品,商品个数可以控制住,但打印“second”会出问题(把下图return换成打印),因为是多步,会被打断,这个无所谓,关键的商品数量控制住了就行。

Redis-5-实际应用

4.2防止重复下单

4.3抢到后添加商品

商品数量控制住之后,抢商品

Redis-5-实际应用

模拟服务器处理不过来,把连接池参数调小(电脑性能高,就要调的很小)

Redis-5-实际应用

50000(电脑性能高,多设数量)个商品抢完了,但是往数据库里添加了三万多条商品

Redis-5-实际应用

以后用消息队列解决

五、Redis数据持久化

redis会在退出之前把内存中的数据永久保存到磁盘中,每次退出再登进来,redis的数据还在,说明进行了数据持久化

Redis-5-实际应用

5.1 RDB(redis database)

存储数据本身,照快照的时间长,因为要保存数据,但还原快

5.1.1 save指令

Redis-5-实际应用

Redis-5-实际应用

修改一下

Redis-5-实际应用

默认不用动

Redis-5-实际应用

快照就在这个地方

Redis-5-实际应用

查看日志命令,你在另一个会话打的所有命令都会显示在上面,不会关闭窗口,都会显示

Redis-5-实际应用

保存的意义在于可以还原数据:把存的rdb拷贝一份,数据就回来了

save指令的缺点:

Redis-5-实际应用

它save是个单线程的,整个保存,别的指令都会等待保存完成,会阻塞在排队的命令

Redis-5-实际应用

5.1.2 bgsave指令(backgroud后台)

这个会新开一个进程,不会影响原来进程的操作,不会阻塞命令

Redis-5-实际应用

Redis-5-实际应用

Redis-5-实际应用

**redis的默认保存策略:**多少时间内有几个key发生变动,会自动调用bgsave:(可以在配置文件中改,改完重启)

Redis-5-实际应用

900 1 :15分钟内有1个key发生变动就会自动保存

Redis-5-实际应用

可以加个10 2 自己测试,界面会自动保存

5.1.3 RDB优缺点(背)

极端情况下还是会丢数据,真正要把数据永久保存还是要靠关系型数据库永久保存在硬盘上

版本不兼容

Redis-5-实际应用

5.2 AOF(append only file)用的多

存储的是操作指令,要把指令全部执行一遍,所以还原慢

5.2.1概念

不存在版本不兼容的情况,指令都是一样的

Redis-5-实际应用

5.2.2 三种存储策略

Redis-5-实际应用

默认不用动

Redis-5-实际应用

5.2.3 AOF开启

Redis-5-实际应用

这两个需要修改,appendfsync默认,dir之前配过不用再改

Redis-5-实际应用

同时有rdb和aof文件,启动时会默认还原aof文件,两个都在就不会发生问题,只有aof文件,之前的rdb文件还是会丢失

Redis-5-实际应用

5.2.4 AOF重写

bgrewriteaof指令

aof存的都是指令

Redis-5-实际应用

优化重复指令282—>119,但优化后里面的数据就看不懂了

Redis-5-实际应用

自动重写:

当新打的指令是原来的100%大写,后台会自动调用bgrewriteaof指令;当写的指令最大到64mb时也会自动调用(默认不用动)

Redis-5-实际应用

5.3 RDB和AOF的区别

Redis-5-实际应用

Redis-5-实际应用

六、主从复制

6.1概念

Redis-5-实际应用Redis-5-实际应用

6.2搭建

搭建前备份之前的配置文件

Redis-5-实际应用

6381.conf

Redis-5-实际应用

6.2.1 方式一:客户端发送命令

首先把6379和6380的日志打开,tail -f

  1. 配置主机密码,注意:这个是从机要配的参数,不要去主机配置文件里配

Redis-5-实际应用

Redis-5-实际应用

  1. 进入6379和6380的客户端,在6380输入命令slaveof ip地址 端口

Redis-5-实际应用

Redis-5-实际应用

  1. 从机只能读不能写

Redis-5-实际应用

输入info命令查看从机自身信息,也可以查看主机信息

Redis-5-实际应用

6.2.2 方式二:启动服务器参数

Redis-5-实际应用

Redis-5-实际应用

6.2.3 方式三:服务器配置

真正的主从机配置用的就是这种方式,是固定的;不用像上面的方法一退出就没了,每次都要加参数,很麻烦。

此时就不配127.0.0.1了,配置自己的真实ip地址

Redis-5-实际应用

Redis-5-实际应用

6.2.4 主机挂了,没有哨兵,自己重新配置主机

主机挂了,从机可以工作,从机只能读不能写,在从机输入命令,它就临时变为主机了,但是一重启又变成从机了,还要去连主机

Redis-5-实际应用

七、哨兵模式