# spring boot + redis 目前是主要流行的配置
通过spring boot + redis实现session共享的步骤如下:
## 运行redis注意
如果是windows运行redis,需要自定义一个bat文件,最重要的时候conf文件要配置上,bat文件内容:
`redis-server redis.windows.conf`
## 添加依赖
pom.xml增加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
```
注意,在有的IDEA版本中的m`aven projects `面板中,会提示 `spring-boot-starter-redis` 未找到,所以这里可以改成` spring-boot-starter-data-redis`,拒查两个类内容是一样的。
## 添加配置类
在项目目录里随便找个位置,新建一个配置类,内容如下。
~~~
@Configuration
@EnableRedisHttpSession
public class RedisSessionConfig {
}
~~~
@EnableRedisHttpSession这个注解是由spring-session-data-redis提供的。
## 配置redis
首先电脑里得有redis,否则无法使用,windows安装redis也很简单,请自行百度。
application.properties里设置主机和端口:
~~~
spring.redis.host=localhost
spring.redis.port=6379
~~~
另外还有很多其他配置:
~~~
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.database=0
spring.redis.password=
spring.redis.timeout=300
spring.redis.maxIdle=8
spring.redis.minIdle=0
spring.redis.maxActive=8
spring.redis.maxWait=-1
~~~
如果redis配置错误,会提示无法连接Jedis提示。注意默认端口是6379,网上有的写错了写成6397了,不要直接复制。
## 万事具备,来一个controller搞一下
~~~
@ResponseBody
@RequestMapping(value = "/setsession", method = RequestMethod.GET)
public Map<String, Object> setSession (HttpServletRequest request){
Map<String, Object> map = new HashMap<>();
request.getSession().setAttribute("设置session的网址是", request.getRequestURL()); // 设置session值
map.put("request Url", request.getRequestURL());
return map;
}
@ResponseBody
@RequestMapping(value = "/getsession", method = RequestMethod.GET)
public Object getSettion (HttpServletRequest request){
Map<String, Object> map = new HashMap<>();
map.put("sessionId", request.getSession().getId()); // 取值
map.put("message", request.getSession().getAttribute("map"));
return map;
}
~~~
@ResponseBody 可以看情况加,它返回的是json类型字符串;如果类里注解了@RestController就省略掉。
## 访问一下
http:://127.0.0.1/setsession,浏览器输出:
```
{"设置session的网址是":"http://localhost:8080/setsession"}
```
http:://127.0.0.1/getsession,浏览器输出:
```
{"sessionId":"...","message":"http://localhost:8080/setsession"}
```
支持多端口共享。