博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis应用实战---结合Spring Session实现会话管理
阅读量:2490 次
发布时间:2019-05-11

本文共 2287 字,大约阅读时间需要 7 分钟。

会话(Session)管理在web开发中是一种不可或缺的功能,Redis集合Spring Session可以轻松便捷的实现分布式集群中的会话管理。

背景信息

由于HTTP的特征之一就是无状态,所以用户在访问同一个网站的不同页面时进行的某些交互性操作将毫无意义,例如,如果用户同时打开了购物车页和商品的详情页,在详情页将若干心仪的商品加入购物车,然后再刷新购物车页,会发现之前加入购物车的商品都没有保存成功,因此,Web应用需要使用会话管理技术,例如Cookie和Session,将用户会话完整保存下来,甚至在分布式服务中共享。

Cookie是客户端技术,将用户信息保存在本地,信息容量受限于用户使用的浏览器,且有一定的安全风险,Session是服务端技术,将用户信息保存在服务端,信息容量可扩展,同时在一定程度上降低了安全风险,弥补了Cookie技术的不足。

操作步骤

1、使用Spring Initializr创建Spring Boot Web项目。

2、在pom.xml中配置Maven依赖。

org.springframework.boot
spring-boot-starter-data-redis
org.springframework.session
spring-session-data-redis
org.springframework.boot
spring-boot-starter-web

3、在application.properties中配置Redis信息。

spring.session.store-type=REDISspring.session.redis.flush-mode=on_savespring.session.redis.namespace=spring:sessionspring.redis.host=10.0.0.130spring.redis.port=6379

4、启动类添加注解

@SpringBootApplication@EnableRedisHttpSessionpublic class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args); }}

5、测试代码

import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;import java.util.UUID;@Controller@RequestMapping("/")public class SessionController {
@RequestMapping(value = "/getSessionId") @ResponseBody public String getSessionId(HttpServletRequest request) {
int port = request.getLocalPort(); String sessionId = request.getSession().getId(); String userId = request.getSession().getAttribute("userId").toString(); return "端口:" + port + "
sessionId:" + sessionId + "
属性userId:" + userId; } @RequestMapping(value = "/setSessionId") @ResponseBody public String setSessionId(HttpServletRequest request) {
String userId = UUID.randomUUID().toString().replaceAll("-", ""); request.getSession().setAttribute("userId", userId); return "Session 设置成功.
userId:" + userId; }}

6、启动两个相同服务,模拟集群环境

在这里插入图片描述

不同用户之间互不影响

在这里插入图片描述

在这里插入图片描述

转载地址:http://mmlrb.baihongyu.com/

你可能感兴趣的文章
docker原始镜像启动容器并创建Apache服务器实现反向代理
查看>>
docker容器秒死的解决办法
查看>>
管理网&业务网的一些笔记
查看>>
openstack报错解决一
查看>>
openstack报错解决二
查看>>
linux source命令
查看>>
openstack报错解决三
查看>>
乙未年年终总结
查看>>
子网掩码
查看>>
第一天上班没精神
查看>>
启动eclipse报错:Failed to load the JNI shared library
查看>>
eclipse安装插件的两种方式在线和离线
查看>>
linux下源的相关笔记(suse)
查看>>
linux系统分区文件系统划分札记
查看>>
Linux(SUSE 12)安装Tomcat
查看>>
Linux(SUSE 12)安装jboss4并实现远程访问
查看>>
Neutron在给虚拟机分配网络时,底层是如何实现的?
查看>>
netfilter/iptables全攻略
查看>>
Overlay之VXLAN架构
查看>>
Eclipse : An error occurred while filtering resources(Maven错误提示)
查看>>