当前位置:

首页 > 编程开发 > redis实现session共享的方法是什么

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

Redis Assistant
Redis Assistant

Redis Assistant 是一款为Redis设计的高效可视化管理与监控工具,提供多种操作模式,高效处理服务器数据。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

立即下载
¥19
Windows/macOS/Linux 2026-08-22
正版软件 Windows macOS软件 Linux 数据库管理工具

引言大厂很多项目都是部署到多台服务器上,这些服务器在各个地区都存在,当我们访问服务时虽然执行的是同一个服务,但是可能是不同服务器运行的;在我学习项目时遇到这样一个登录情景,假设有如下三台服务器(如图),就使用session存放用户的登录信息,通过该信息可以判断用户是否登录:假设本次登录是通过服务器01执行的,那么这次的登录session信息就存放到了内存01中;但是当我再次访问时却是服务器02执行操作,而登录session信息却在内存01中,服务器02无法获取,所以它就会判断我没有登录,返回错误的信息&h

本文目录

    引言

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

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

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

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

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

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

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

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

    • 关系型数据库:Mysql等

    • 非关系型数据库:Redis(K/V数据库)等

    这里其实选择非关系型数据库最好,因为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 中):

    
    
    	org.springframework.boot
    	spring-boot-starter-data-redis
    	2.6.4
    
    
    
    	org.springframework.session
    	spring-session-data-redis
    	2.6.3
    

    在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依赖版本需要接近。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    淘宝网页版入口查找教程
    淘宝网页版入口查找教程

    淘宝官方网页登录入口 对于如何找到淘宝网页版的入口,很多朋友都感到有点摸不着头脑。别急,这篇文章就来为你拆解清楚整个登录流程。官方的登录入口很明确,就在官网首页的左上角。 淘宝网页版入口位于官网首页左上角,点击“亲,请登录”即可跳转至统一的验证页面。登录支持密码、短信验证码和手机APP扫码三种方式,

    ICML 精选Spotlight Poster汇总:Session 7-1
    ICML 精选Spotlight Poster汇总:Session 7-1

    ICML2026精选八篇Spotlight论文,涵盖图结构适配、自动形式化、多领域推理、个性化联邦学习、数据选择优化、可微优化、因果推理及扩散语言模型加速等方向,展现了计算机视觉与人工智能的前沿突破。

    Cookie与Session及SpringMVC返回值技术详解(完整交互流程)
    Cookie与Session及SpringMVC返回值技术详解(完整交互流程)

    一、Cookie 与 Session 核心知识点 1.1 HTTP 无状态特性 要理解Cookie和Session,得先搞清楚一个根本问题:HTTP协议本身是“无状态”的。 所谓无状态,说白了就是协议本身不会记录任何历史请求信息——服务器处理完一次请求后,就把这次请求是谁发的给“忘”了。下次同一客户

    php72w redis,docker php7安装php-redis
    php72w redis,docker php7安装php-redis

    在Docker环境下为PHP安装Redis扩展:手动编译需下载源码、安装phpize、配置编译并安装,生成redis.so并在php.d目录新建redis.ini加载,重启PHP-FPM;也可直接yum安装php72w-pecl-redis,免手动编译。

    php 如何配置 redis,php 如何设置redis
    php 如何配置 redis,php 如何设置redis

    配置PHP的Redis扩展:先安装Redis服务,从GitHub下载phpredis源码,用phpize编译安装,修改php.ini添加extension=redis.so,重启php-fpm或Apache,通过phpinfo验证并连接Redis。

    c++如何将结构体序列化为Redis兼容的RESP协议格式【深度】
    c++如何将结构体序列化为Redis兼容的RESP协议格式【深度】

    C++结构体无法直接序列化为RESP协议,需手动将字段映射为*N数组嵌套$lenbulkstring形式。整数需转换为字符串并加:前缀,空字符串用$0\r\n,null用$-1\r\n。长度计算需精确到字节数,特别注意二进制安全,同时确保字段顺序与结构体定义一致。

    如何在 PHP 中立即访问刚设置的 Session 变量
    如何在 PHP 中立即访问刚设置的 Session 变量

    在PHP中,只要正确调用session_start()启动会话,即可在同一请求中立即读取刚赋值的$_SESSION变量,无需页面重载。关键在于确保会话在脚本开头激活且未被销毁,因为$_SESSION是超全局数组,读写瞬时完成。

    CodeIgniter怎样使用Session类_CodeIgniter使用Session类方法【状态】
    CodeIgniter怎样使用Session类_CodeIgniter使用Session类方法【状态】

    CodeIgniter的Session加载方式有:控制器构造函数手动加载、设置自动加载、CI4服务容器注入及辅助函数session()。验证初始化成功需检查加密密钥encryption_key是否已设置。

    PHP怎么处理用户会话固定攻击_PHP Session安全加固【详解】
    PHP怎么处理用户会话固定攻击_PHP Session安全加固【详解】

    登录成功的那一刻,如果没做 session_regenerate_id(true),那基本等于把刚拿到的登录凭证明晃晃地递给了攻击者。这不是什么锦上添花的功能,而是防御会话固定攻击的唯一有效动作——必须在身份确认无误的瞬间,切断旧会话ID与用户身份的绑定。 登录验证通过后必须立刻执行 session

    如何在Golang架构中部署Redict作为高能数据临时存储中转站
    如何在Golang架构中部署Redict作为高能数据临时存储中转站

    Redis作为跨服务临时状态枢纽,需按消息队列、缓存和原子状态三重角色设计。选型用List实现任务分发及延迟重试,Stream用于事件广播与位点回溯。go-redis/v8需配置MinIdleConns、MaxRetries及超时。数据写入应JSON序列化并带type标签、设合理TTL、将关键字段提至顶层。消费通过原子GET+DEL或processedkey

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?