内存中间件之redis(cook/session兼述)

一、redis功用

1、redis的应用场景

1)redis核心应用场景即作为缓存

	我们需要一次性加粗样式从数据库获取大量数据,加上高并发时候,数据库会崩溃;即使用了分库分表,但是不崩溃的前提是应用卡顿,所以需要把数据先查询好,放到内存中保存起来,这也叫做缓存;

2)redis全局登陆场景即单点登陆

	redis的使用方法之单点登陆场景,即全局登陆场景,白话解释为:当一个客户端第一次登陆到服务器后,会把客户端的cookid发送到服务器端,服务器端会根据cookid创建一个session,当下次客户端请求来的时候,就会根据服务端的session保存的cookid进行识别,这样就可以登陆了;但是若把服务端采用分布式,则不同服务器中就不会保留有此session数据,这样就又需要重新登陆,麻烦。

2、redis的原理

1)redis缓存的原理

(1)redis缓存的原理概述
	缓存的实质就是在内存中存数据,所以表现缓存的方式有很多,如写map来存临时数据,写对象来存临时数据等;redis原理就是类对象缓存即缓存,根据自己的数据结构,在内存中存数据,只不过是可以做到持久化,这就是redis区别其它临时缓存的优势,即有自己的数据结构,且是内存全局的;
(2)redis缓存原理模拟助理解

在这里插入图片描述

2)redis单点登陆的原理

(1)redis单点登陆的原理概述
	redis的使用方法之单点登陆场景,即全局登陆场景,白话解释为:当一个客户端第一次登陆到服务器后,会把客户端的cookid发送到服务器端,服务器端会根据cookid创建一个session,当下次客户端请求来的时候,就会根据服务端的session保存的cookid进行识别,这样就可以登陆了;但是若把服务端采用分布式,则不同服务器中就不会保留有此session数据,这样就又需要重新登陆,麻烦。
(2)redis单点登陆的原理模拟助理解(顺带讲解了拦截器流程)

在这里插入图片描述
注意:配置中的<mvc:exclude-mapping path=“路径”>是指放过这个路径,其余路径才是要拦截的;
对上面controller层中login()方法的具体实现:
在这里插入图片描述

3、redis的使用方法之缓存场景

1) redis缓存包的引用

在这里插入图片描述

2) redis缓存包类的相关参数配置

在这里插入图片描述

3) redis缓存包的使用方法

	不同项目框架下的redis使用方法,略有不同,体现在对redis类对象的实例化方式上,springBoot框架是用注解来实例化的,xml是用<bean>标签来实例化的;其余的使用一样;
(1)springBoot框架下redis的使用方法

Step1:这个的实例化是以注解的形式来实例化的;
Step2:注解引入类对象(即引入redis这个中间件缓存)
在这里插入图片描述
Step3:对redis缓存中数据进行读写操作,同下;

(2)xml框架下redis的使用方法

Step1:这个的实例化是以标签来实例化的;
在这里插入图片描述
Step2:注解引入类对象(即引入redis这个中间件缓存)
在这里插入图片描述
Step3:对redis缓存中数据进行读写操作
在这里插入图片描述

4) redis缓存包的存储数据结构

4、redis的使用方法之单点登陆场景

1) redis单点登陆包的引用

在这里插入图片描述
注意:哪个类中要引入,就那个文件夹的pom.xml中引入;

2) redis单点登陆包类的相关参数配置

在这里插入图片描述

3) redis单点登陆包的使用方法

	不同项目框架下的redis使用方法,略有不同,体现在对redis类对象的实例化方式上,springBoot框架是用注解来实例化的,xml是用<bean>标签来实例化的;其余的使用一样;
(1)springBoot框架下redis的使用方法

Step1:这个的实例化是以注解的形式来实例化的;
Step2:注解引入类对象(即引入redis这个中间件缓存)
在这里插入图片描述
Step3:对redis缓存中数据进行读写操作,同下;

(2)xml框架下redis的使用方法

Step1:这个的实例化是以标签来实例化的;
在这里插入图片描述
Step2:注解引入类对象(即引入redis这个中间件进行单点登陆)
在这里插入图片描述
Step3:对redis单点登陆中数据进行读写操作
在这里插入图片描述

对上面controller层中login()方法的具体实现:
在这里插入图片描述

5、redis相关网址

官网

二、cookie功用

1、cookie的应用场景

	一般情况,此方式已经不用了,除非是非常简单的,客户端和单服务器的会话;

2、cookie的原理

	把用户数据,保存到客户端;

3、cookie的使用方法

在这里插入图片描述

三、session功用

1、session的应用场景

	一般情况,除非是非常简单的,客户端和单服务器的会话;

2、session的原理

	把用户数据,保存到服务端;

在这里插入图片描述

3、session的使用方法

在这里插入图片描述

四、cookid,session和redis三者区别

cookid是客户端的,每一个浏览器有一个cookid;所以换一个浏览器后就要重新登录了;
session是服务器的,所以只要服务器不崩,则任何时候都可以登陆;当然换了个新的服务器肯定就不行了;
redis是服务器创建的,是全局的,是把session数据放到了redis中的,因此可以实现单点登陆即全局登陆;就是服务器集群后,依然不影响,因为redis有 自己的服务器内存存数据;

您可以使用`spring.session.servlet.filter-dispatcher-types`属性来排除以`/api/`开头的请求。具体来说,您可以配置该属性,使其不拦截`/api/**`路径下的请求。 例如,以下配置将排除以`/api/`开头的请求: ``` spring.session.servlet.filter-dispatcher-types=REQUEST,ASYNC spring.session.servlet.filter.enabled=false spring.session.store-type=redis spring.session.redis.flush-mode=on_save spring.session.redis.namespace=spring:session spring.session.redis.cleanup-cron=0 * * * * * spring.session.redis.save-mode=on_set_attribute spring.session.redis.redis-url=redis://localhost:6379 spring.session.redis.redis-password=password spring.session.redis.redis-sentinel-master-id=mymaster spring.session.redis.redis-sentinel-nodes=sentinel://localhost:26379,sentinel://localhost:26380,sentinel://localhost:26381 spring.session.redis.redis-sentinel-password=password spring.session.redis.redis-cluster-nodes=localhost:6379,localhost:6380,localhost:6381 spring.session.redis.redis-cluster-max-redirects=3 spring.session.redis.redis-properties.ssl=true spring.session.redis.redis-properties.ssl-truststore=classpath:redis.truststore spring.session.redis.redis-properties.ssl-truststore-password=redispassword spring.session.redis.redis-properties.ssl-keystore=classpath:redis.keystore spring.session.redis.redis-properties.ssl-keystore-password=redispassword spring.session.redis.redis-properties.useSsl=true spring.session.redis.redis-properties.sslProtocols=TLSv1.2,TLSv1.3 spring.session.redis.redis-properties.sslCipherSuites=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 spring.session.redis.redis-properties.sslProvider=JDK spring.session.redis.redis-properties.sslEnableEndpointIdentification=true spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.session.SessionAutoConfiguration ``` 在以上配置中,我们使用了`spring.session.servlet.filter-dispatcher-types`属性配置,使其不拦截`/api/**`路径下的请求。注意,我们也排除了Spring Boot自动配置的会话管理,因为我们已经使用了Spring Session Redis进行会话管理。 请注意,这只是一个示例配置,您需要根据您的具体需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值