您的位置:首页 > 数据库 > Redis

SpringBoot整合NoSql(一)——Redis本地连接实现Session共享

2020-03-17 18:41 716 查看

seesion共享:

使用Redis实现session共享原理如下,简单来说就是把session存到redis中去!多个服务器都能够通过Redis共享这个Session,因此我们在访问不同的服务器时,虽然不是原来拥有session服务器,但是我们仍然可以通过Redis共享的session进行成功的访问!

为什么引入security?

spring 2.1.5开始,远程连接Redis必须引入Spring security,这里虽然仅仅在本地进行,但是后面远程连接服务器,仍会用到这个示例。

一、Redis安装配置

Windows安装Redis服务以及可视化客户端

二、Redis实现数据存储

 关于SpringBoot中maven的相关配置推荐阅读:SpringBoot——IDEA配置maven

1.选用依赖:

2.
application.properties
配置文件下面配置我们的Redis

spring.redis.host=127.0.0.1     #本地连接
spring.redis.port=6379          #Redis默认端口
spring.redis.password=123456    #Redis密码
spring.redis.database=0         #Redis数据

3.新建并编写
TestRedisController

@RestController
public class TestRedisController {
@Autowired
StringRedisTemplate stringRedisTemplate;

@GetMapping("/set")
public String  set() {
ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
ops.set("name","alvin");
return "set success";
}
@GetMapping("/get")
public String get() {
ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
return ops.get("name");
}

}

 运行代码后,我们在网页分别访问

localhost:8080/set``````localhost:8080/get
因为我们引入了SpringSecurity它会让我们登录,用户名默认为
user
密码为日志下面的一串随机的密码


 登陆后,就能进如set/ get/下的页面啦~


此时Redis已经成功的存储了数据

三、Redis实现Session共享

1.新建并编写
SessionController

 将原来的

TestRedisController
删除,然后新建
SessionController
,来测试session共享的实现

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpSession;

@Controller
public class TestController {
@Value("${server.port}")
Integer port;
@ResponseBody
@RequestMapping("/set")
public String set(HttpSession session) {
session.setAttribute("user", "alvin");
return String.valueOf(port);
}
@ResponseBody
@RequestMapping("/get")
public String get(HttpSession session) {
return session.getAttribute("user") + ":" + port;
}
}

2.将项目打包为
jar

3.分别在
8080
8081
端口执行
jar

执行之前我们先保证Redis还未缓存数据,所以先清除Redis中的数据

keys *  #查看所有缓存数据
FLUSHALL #清除所有缓存数据

  • 8080
cd target
java -jar session-0.0.1-SNAPSHOT.jar

  • 8081
cd target
java -jar session-0.0.1-SNAPSHOT.jar server.port=8081


 此时我们已经执行了两个seesion实例,这样我们可以通过登录来验证他们是否进行了session共享

三、登陆验证

 首先测试

8080端口


 因为加入了SpringSecurity因此需要输入密码

测试
8081端口:


不难发现,虽然8080和8081端口密码并不一致,但是此时,8081端口已经无需登录,就可以进入页面,说明已经实现了session共享!

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Lukey Alvin 发布了84 篇原创文章 · 获赞 139 · 访问量 13万+ 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: