Spring Session -redis
2020-02-03 04:43
866 查看
SpringBoot之使用Spring Session集群-redis
用nginx做负载的时候,会出现每一次http请求都会分配到不同的tomcat上,这样用session存储用户数据就会有问题。因为tomcat集群之间没有实现session共享。
spring-session跟redis很好的帮我们解决了这个问题。
一、引入maven依赖
01 |
<? xml version = "1.0" encoding = "UTF-8" ?> |
02 |
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" |
03 |
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > |
04 |
< modelVersion >4.0.0</ modelVersion > |
05 |
06 |
< groupId >com.cicoding.druid</ groupId > |
07 |
< artifactId >springboot_session_redis_colony</ artifactId > |
08 |
< version >0.0.1-SNAPSHOT</ version > |
09 |
< packaging >war</ packaging > |
10 |
11 |
< name >springboot_session_redis_colony</ name > |
12 |
< description >Demo project for Spring Boot</ description > |
13 |
14 |
< parent > |
15 |
< groupId >org.springframework.boot</ groupId > |
16 |
< artifactId >spring-boot-starter-parent</ artifactId > |
17 |
< version >1.5.9.RELEASE</ version > |
18 |
< relativePath /> <!-- lookup parent from repository --> |
19 |
</ parent > |
20 |
21 |
< properties > |
22 |
< project.build.sourceEncoding >UTF-8</ project.build.sourceEncoding > |
23 |
< project.reporting.outputEncoding >UTF-8</ project.reporting.outputEncoding > |
24 |
< java.version >1.8</ java.version > |
25 |
</ properties > |
26 |
27 |
< dependencies > |
28 |
< dependency > |
29 |
< groupId >org.springframework.boot</ groupId > |
30 |
< artifactId >spring-boot-starter-data-redis</ artifactId > |
31 |
</ dependency > |
32 |
< dependency > |
33 |
< groupId >org.springframework.session</ groupId > |
34 |
< artifactId >spring-session-data-redis</ artifactId > |
35 |
</ dependency > |
36 |
37 |
< dependency > |
38 |
< groupId >org.springframework.boot</ groupId > |
39 |
< artifactId >spring-boot-starter-web</ artifactId > |
40 |
</ dependency > |
41 |
</ dependencies > |
42 |
43 |
< build > |
44 |
< plugins > |
45 |
< plugin > |
46 |
< groupId >org.springframework.boot</ groupId > |
47 |
< artifactId >spring-boot-maven-plugin</ artifactId > |
48 |
</ plugin > |
49 |
</ plugins > |
50 |
</ build > |
51 |
</ project > |
二、配置application.properties
server.port=8082 spring.redis.host=localhost spring.redis.port=6379 spring.redis.password=redis password # spring session使用存储类型 spring.session.store-type=redis
- spirngboot默认就是使用redis方式,如果不想用可以填none。
三、在启动类中加入@EnableRedisHttpSession 注解
package com.cicoding; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; @EnableCaching @EnableRedisHttpSession @SpringBootApplication public class SessionApplication { public static void main(String[] args) { SpringApplication.run(SessionApplication.class, args); } }
四、编写控制器
package com.cicoding.controller; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @RequestMapping(value = "/") public class UserController { @ResponseBody @RequestMapping(value = "/session") public Map<String, Object> getSession(HttpServletRequest request) { request.getSession().setAttribute("username", "admin"); Map<String, Object> map = new HashMap<String, Object>(); map.put("sessionId", request.getSession().getId()); return map; } @ResponseBody @RequestMapping(value = "/get") public String get(HttpServletRequest request) { String userName = (String) request.getSession().getAttribute("username"); return userName; } }
五、测试
转载于:https://www.cnblogs.com/The-second/p/11295348.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 使用Spring Session和Redis管理session
- Spring session(redis存储方式)监听导致创建大量redisMessageListenerContailner-X线程
- 使用Spring Session和Redis解决分布式Session跨域共享问题
- Spring session使用Redis 这么简单
- Spring session整合到Redis过程解析
- 解决Spring session(redis存储方式)监听导致创建大量redisMessageListenerContailner-X线程问题
- Spring boot配合Spring session(redis)遇到的错误
- 利用Spring Session和redis对Session进行共享详解
- 使用Spring Session和Redis解决分布式Session跨域共享问题
- (十九)SpringBoot之使用Spring Session集群-redis
- 使用Spring Session和Redis管理session
- Spring session 共享整合redis
- Spring Session - 使用Redis存储HttpSession例子
- Spring MVC 使用 Spring Session 实现 Session 共享-Redis
- 使用Redis集成Spring Session
- 1、Spring Session-使用Redis的HttpSession
- Spring session共享(使用redis)
- Spring Boot集成Spring Data Reids和Spring Session实现Session共享(多个不同的应用共用一个Redis实例)
- spring session和Redis数据库实现单点登录功能
- spring session和redis集群打造分布式会话使用方案及错误解决