返回顶部
首页 > 资讯 > 精选 >redis实现session共享的方法是什么
  • 436
分享到

redis实现session共享的方法是什么

2023-07-06 04:07:08 436人浏览 独家记忆
摘要

这篇文章主要介绍“redis实现session共享的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Redis实现session共享的方法是什么”文章能帮助大家解决问题。引言大厂很多项目都是

这篇文章主要介绍“redis实现session共享的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Redis实现session共享的方法是什么”文章能帮助大家解决问题。

引言

大厂很多项目都是部署到多台服务器上,这些服务器在各个地区都存在,当我们访问服务时虽然执行的是同一个服务,但是可能是不同服务器运行的;

在我学习项目时遇到这样一个登录情景,假设有如下三台服务器(如图),就使用session存放用户的登录信息,通过该信息可以判断用户是否登录:

redis实现session共享的方法是什么

假设本次登录是通过服务器01执行的,那么这次的登录session信息就存放到了内存01中;但是当我再次访问时却是服务器02执行操作,而登录session信息却在内存01中,服务器02无法获取,所以它就会判断我没有登录,返回错误的信息…

我们想要实现的就是通过一台服务器登录所生成的session可以和其他服务器共享,那么该如何实现?

解决方法 思路就是既然这几个服务器自己的内存不能共享,那么只要有一个共享空间供这几个服务器共同访问不就可以了(如图);

redis实现session共享的方法是什么

首先想到的应该就是数据库,只要这些服务器集群共享一个数据库,并把生成的session信息存放到数据库中不就可以了,这样大家都可以访问;数据库有关系型和非关系型(NoSql):

这里其实选择非关系型数据库最好,因为Redis基于内存,读写性能高,很适合这种用户信息频繁读取的情况;

还可以通过文件服务器实现,这里就不介绍了;

还有一种方法,可以通过Nginx的iphash实现,该方法非常简单,但是思路和上面两种不同,原理就是同一个ip的所有请求都会被nginx进行iphash进行计算,将结果绑定到指定服务器,之后这个请求都会访问到该服务器中。
但是这样就有一些问题,首先就算负载均衡就没有太大意义了,如果绑定的服务器挂了,那么iphash也就失效了;又或者你的请求被其他服务分发而未走nginx服务,那么iphash同样不生效;所以谨慎使用;

下面我就简单通过代码模拟一下如何通过redis配置轻松实现session共享

案例介绍

这里有一个用户管理项目,在登录时登录逻辑代码会记录下来登录用户的session信息:

redis实现session共享的方法是什么

然后同时开启了该项目的两个服务:localhost:8080和localhost:8082(可以当作两台不同服务器上运行的项目)

redis实现session共享的方法是什么

开启服务后可以访问对应的接口文档:

redis实现session共享的方法是什么

-----------------------------------分割线-------------------------------------------

redis实现session共享的方法是什么

该服务都有以下两个接口:(以下测试是在同一个服务中测试的)

登录接口:记录登录用户session信息

redis实现session共享的方法是什么

登录测试:

redis实现session共享的方法是什么

获取当前用户信息接口:通过登录session获取当前用户信息

redis实现session共享的方法是什么

获取当前登录用户信息测试:

redis实现session共享的方法是什么

因为现在这是两个服务,所以肯定实现不了共享session的,就算在8080端口的服务登录了,也无法在8082端口的服务获取到当前用户信息;(再次强调:上面测试可以获取到当前用户信息是因为在同一个服务中测试的,同一个服务session存放到他自己的内存中当然可以自己访问了)

具体操作

下面就通过redis配置实现共享session:

首先要下载redis,下载网上找教程;这里我直接用的在服务器上通过Docker创建的redis容器(简单好用,强烈推荐):

redis实现session共享的方法是什么

通过可视化工具可以连接一下:

redis实现session共享的方法是什么

这样redis就配置好了,下面在项目代码中配置redis:

在项目中引入redis依赖和spring-session配置依赖(自动将 session 存储到 redis 中):

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.6.4</version></dependency><!-- Https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis --><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId><version>2.6.3</version></dependency>

在application.yml文件中配置连接redis和session相关配置:

spring:  # session配置  session:    timeout: 86400 # 设置session失效时间    store-type: redis # 修改spring-session存储配置,默认存储到服务器内存中,现在设置存到redis中(关键)  # redis配置  redis:    port: 8081 # redis的端口号(这里是我的redis容器在docker中对应的端口号)    host: xx.xxx.xxx.xxx # 我的云服务器ip    database: 0 # 设置存入redis的哪一个库(默认是0)

其实关键配置就一个: store-type: redis,只要配置了这个,那么代码中session就会存放到redis中而不是自己的内存中;

接下来就可以测试了:

调用登录接口,生成用户session信息,查看redis:

redis实现session共享的方法是什么

可以看到用户登录session已经存放到redis中了,这样我在8080端口登录,在8082也可以获取到登录的session信息:

登录:

redis实现session共享的方法是什么

获取信息:

redis实现session共享的方法是什么

这样就通过redis实现session共享了;

需要注意:引入redis和spring-redis依赖版本需要接近。

关于“redis实现session共享的方法是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: redis实现session共享的方法是什么

本文链接: https://lsjlt.com/news/357681.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • redis实现session共享的方法是什么
    这篇文章主要介绍“redis实现session共享的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“redis实现session共享的方法是什么”文章能帮助大家解决问题。引言大厂很多项目都是...
    99+
    2023-07-06
  • redis实现session共享的方法
    目录引言案例介绍具体操作引言 大厂很多项目都是部署到多台服务器上,这些服务器在各个地区都存在,当我们访问服务时虽然执行的是同一个服务,但是可能是不同服务器运行的; 在我学习项目时遇到这样一个登录情景,假设有如下三台服务器...
    99+
    2023-04-14
    redis session共享 Redis共享 Session
  • Redis如何实现Session共享
    这篇文章运用简单易懂的例子给大家介绍Redis如何实现Session共享,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Redis实现Session共享这几天在做session共享这么一...
    99+
    2024-04-02
  • SpringBoot+SpringSession+Redis怎么实现session共享
    这篇文章主要介绍SpringBoot+SpringSession+Redis怎么实现session共享,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!springboot是什么springboot一种全新的编程规范,其...
    99+
    2023-06-14
  • 在Spring-Session使用Redis如何实现共享session
    这期内容当中小编将会给大家带来有关在Spring-Session使用Redis如何实现共享session,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、添加依赖<dependency> &l...
    99+
    2023-05-31
    spring session redis
  • Redis实现Session共享与单点登录
    首先,导包。 在pom.XML文件里面加入以下: <dependency> <groupId>org.springframework.boot</groupId> <...
    99+
    2022-07-12
    RedisSession共享 RedisSession单点登录
  • spring boot与redis 实现session共享教程
    如果大家对spring boot不是很了解,大家可以参考下面两篇文章。Spring Boot 快速入门教程Spring Boot 快速入门指南这次带来的是spring boot + redis 实现session共享的教程。在spring ...
    99+
    2023-05-31
    spring boot redis
  • Redis解决Session共享问题的方法详解
    企业项目中,一般都是将项目部署到多台服务器上,用nginx做负载均衡。这样可以减轻单台服务器的压力,不过这样也带来一些问题,例如之前单机部署的话,session存取都是直接了当的,因为请求就只到这一台服务器上,不需要考虑...
    99+
    2022-07-11
    Redis解决Session共享 Redis Session共享
  • tomcat的session共享怎么实现
    在Tomcat中,可以通过以下几种方式来实现Session共享:1. 使用Tomcat的集群功能:Tomcat提供了内置的集群功能,...
    99+
    2023-09-21
    tomcat
  • Redis的共享session应用实现短信登录
    目录1. 基于 session 实现短信登录1.1 短信登录流程图1.2 实现发送短信验证码1.3 实现短信验证码登录、注册1.4 实现登录校验拦截器2. 集群的 session 共享问题3. 基于 Redis 实现共享...
    99+
    2022-08-17
    Redissession短信登录 Redis共享session
  • springcloud怎么实现Session共享
    本篇内容介绍了“springcloud怎么实现Session共享”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通常情况下,Tomcat、Je...
    99+
    2023-06-05
  • 怎么在Spring Boot中利用Redis实现session共享
    本篇文章给大家分享的是有关怎么在Spring Boot中利用Redis实现session共享,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。引入spring-boot-start...
    99+
    2023-05-30
    springboot session redis
  • SpringCloud开启session共享并存储到Redis的实现
    目录一、原架构二、调整架构以及相应的代码1、Redis和session的配置2、增加配置类3、应答过滤器增加session设置4、增加控制台处理的过滤器ConsoleFilter5、...
    99+
    2023-02-14
    SpringCloud session共享 SpringCloud开启session共享 Redis存储
  • redis分布式共享内存的方法是什么
    Redis分布式共享内存的方法主要有以下几种:1. Redis Cluster:Redis Cluster是Redis官方推出的分布...
    99+
    2023-08-23
    redis
  • Spring Session和Redis解决分布式Session跨域共享问题是什么
    本篇文章给大家分享的是有关Spring Session和Redis解决分布式Session跨域共享问题是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一...
    99+
    2024-04-02
  • Redis的共享session应用如何实现短信登录
    本篇内容介绍了“Redis的共享session应用如何实现短信登录”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2024-04-02
  • session存储redis的方法是什么
    在Redis中,可以使用以下方法来存储会话(session):1. 使用SET命令:可以使用SET命令将会话数据存储为一个字符串类型...
    99+
    2023-09-11
    session redis
  • SpringSession+Redis实现集群会话共享的方法
    WEB应用开发完成后部署到Tomcat或其他容器中供用户访问. 小型应用在一台服务器上安装Tomcat并部署WEB应用. 随着访问量增大, Tomcat的压力会越来越大, 直至崩溃. 为了保证WEB应用的承...
    99+
    2024-04-02
  • SpringBoot+SpringSession+Redis实现session共享及唯一登录示例
    最近在学习springboot,session这个点一直困扰了我好久,今天把这些天踩的坑分享出来吧,希望能帮助更多的人。 一、pom.xml配置  <depend...
    99+
    2024-04-02
  • php共享内存的方法是什么
    在PHP中,可以使用共享内存来实现进程间的通信和数据共享。PHP提供了一个扩展模块,名为shmop,该模块允许我们创建和操作共享内存...
    99+
    2023-09-06
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作