spring-session + redis 实现集群 session 共享

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

目前市面上实现session共享的方案有很多,其中比较常用的是使用Tomcat、Jetty等web服务器提供的session共享功能,以此将session内容统一存放在数据库(如mysql)或者缓存(redis)中;另外一种方案不依赖于servlet容器,而是web应用代码层面上的实现,而且操作极其简便,只需要在已有项目基础上加入spring-session框架和redis就可实现session共享。

前一种session共享方案依赖servlet容器,如部署使用的是tomcat时需要修改tomcat的相关配置;后一种方案适用于发布容器不固定,例如使用docker作为发布容器,每次重新部署都会重新创建容器,tomcat的配置也要重新修改,相对比较麻烦。

本文主要讲述第二种session共享方案【maven项目为例】。

  1. 添加项目依赖
        <dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>1.7.3.RELEASE</version></dependency><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session</artifactId><version>1.2.2.RELEASE</version></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.4.2</version></dependency>

2.修改spring配置文件

添加以下配置,代表spring-session将存放在redis中,其中maxInactiveIntervalInSeconds表示session存放在redis的过期时间,默认1800秒。

    <bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"><property name="maxInactiveIntervalInSeconds" value="43200"/></bean>

添加redis配置:

单节点redis>

    <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"><property name="hostName" value="${redis.host}" /><property name="port" value="${redis.port}" /><property name="password" value="${redis.password}" /></bean>

集群redis>

    <bean id="sentinelConfig" class="org.springframework.data.redis.connection.RedisSentinelConfiguration"><constructor-arg name="master" value="${redis.master}" /><constructor-arg name="sentinelHostAndPorts"><set><value>127.0.0.1:2679</value><!--配置redis哨兵--><value>127.0.0.1:2678</value></set></constructor-arg></bean><bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"><constructor-arg ref="sentinelConfig" /><property name="password" value="${redis.password}"/></bean>

3.修改web.xml 配置

    <filter><filter-name>springSessionRepositoryFilter</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping><filter-name>springSessionRepositoryFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

到此,所有工作均已完成,启动项目即可检验session是否实现共享。 项目中使用的redis server版本必须2.8+ 。

喜欢的朋友可以关注我的公众号,更多精彩分享尽在“Java实战”。

输入图片说明

转载于:https://my.oschina.net/firstbing/blog/1559728

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三方的使用

1. MMDrawerController 抽屉效果 2.SVProgressHUD 透明指示层 3.SDCycleScrollView 无限轮播器 4.SDWebImage 异步图片加载 5.RESideMenu 抽屉效果 6.AFNetworking 网络请求 7.MJRefresh tableView上下拉刷新 8.MJExtension json转模型 9.Masonry 布局适配框架 10.UMengSocia…

《看聊天记录都学不会Python到游戏实战?太菜了吧》(10)无底洞的循环

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

业务流水号规则生成组件

对于很多业务系统都需要生成业务流水号&#xff0c;如果订单号、购采单号等等&#xff1b;而这些业务流水号并不是简单的一个增长数值&#xff0c;它们很多时候都有一些不同的规则来定义&#xff0c;如不同类型的字母或地区拼音简写等。为了更灵活生成这些有规则的业务流水号Be…

Android之奔溃提示com.google.gson.internal.LinkedTreeMap cannot be cast to java.util.HashMap

1 问题 Android端获取服务端的数据然后我直接把数据转hashMap提示错误如下&#xff0c; com.google.gson.internal.LinkedTreeMap cannot be cast to java.util.HashMap 2 解决办法 直接转Map集合即可 (t.data as Map<String, String>).forEach({if (KEEP_NAME.equals…

ArcGIS中国工具(ArcGISCTools)3.2 安装教程(附安装包下载)

ArcGIS中国工具,简称CTools,集成在ArcGIS 10.x系列版本中。本文在ArcGIS10.7的基础之上,演示3.2版本安装过程,并提供下载地址共大家学习和交流。 一、安装过程

函数式编程工具:filter和reduce

# -*- coding: utf-8 -*- #python 27 #xiaodeng #函数式编程工具&#xff1a;filter和reduce#python内置函数中&#xff0c;map函数是用来进行函数式编程这类工具最简单的内置函数代数#函数式编程含义&#xff1a; #一种编程范式&#xff0c;也就是如何编写程序的方法论&#x…

阿里云ECS,搭建MySQL5.7数据库环境

为什么80%的码农都做不了架构师&#xff1f;>>> 配置mysql yum源 [rootiZbp1j6oiamq7t2otpryarZ ~]# cd /data/ [rootiZbp1j6oiamq7t2otpryarZ data]# ll total 0###################################下载mysql源安装包# [rootiZbp1j6oiamq7t2otpryarZ data]# wge…

Python——通过斐波那契数列来理解生成器

一、生成器&#xff08;generator&#xff09; 先来看看一个简单的菲波那切数列&#xff0c;出第一个和第二个外&#xff0c;任意一个数都是由前两个数相加得到的。如&#xff1a;0,1,1,2,3,5,8,13...... 输入斐波那契数列前N个数&#xff1a; def fab(max): n, a, b 0, 0, 1 …

《看聊天记录都学不会Python到游戏实战?太菜了吧》(9)集万家之长不死 python

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

公司c语言面试题目,c语言面试最必考的十道试题,求职必看!!!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼6、free()函数问&#xff1a;下面的程序会在用户输入’freeze’的时候出问题&#xff0c;而’zebra’则不会&#xff0c;为什么?#include int main(int argc, char *argv[]) {char *ptr (char*)malloc(10);if(NULL ptr){printf(…

Android之解决TabLayout里面每个Tab项的间距和修改指示线的长度(非反射)和修改选中字体大小

1 问题 1)由于TabLayout设置了可滑动Tab参数 app:tabMode="scrollable" 导致每个Tab之间的间距很大,但是UI设计图里面的字体之间的间距很小,我们改怎么解决? 2)修改TabLayout指示线的长度(非反射) 3)修改选中的字体大小并且加粗 2 解决办法 问题1解决办法…

【重磅】ArcGIS 10.8手把手经典图文安装教程(附安装包全套装下载,亲测可用)

ArcMap时代的最后一版软件,未来官方对ArcMap的支持将仅限于提供补丁,更新和新环境支持,换句话说ArcMap10.8.X将会是最终版本,以后不会再有ArcMap10.9了,官方建议所有人在完成工作流程后立即迁移到ArcGIS Pro。 时间真快,ArcGIS 10.7刚装完没几天,作为GISer的我,有的开始…

聊聊 C# 中的 Visitor 模式

前言 Visitor模式在日常工作中出场比较少&#xff0c;如果统计大家不熟悉的模式&#xff0c;那么它榜上有名的可能性非常大。使用频率少&#xff0c;再加上很多文章提到Visitor模式都着重于它克服语言单分派的特点上面&#xff0c;而对何时应该使用这个模式及这个模式是怎么一…

AcWing 889. 满足条件的01序列(卡特兰数应用)

满足条件的01序列 假设长度为n个序列要求满足题意1的前缀0的个数不能超过1的个数 将问题抽象为从(0, 0)到(n, n) 向上走一个代表这一步对应序列中的值是1&#xff0c;向右走代表序列中的值是0 要想满足1的前缀0的数量大于1的数量就需要满足所有路过的途径在y x这个函数个下面…

添加ASP.NET网站资源文件夹

ASP.NET应用程序包含7个默认文件夹&#xff0c;分别为Bin、APP_Code、App_GlobalResources、App_LocalResources、App_WebReferences、App_Browsers和“主题”文件夹。每个文件夹都存放ASP.NET应用程序的不同类型的资源。 方法 说明Bin  包含程序所需的所有已编译程序集&#…

《看聊天记录都学不会Python到游戏实战?太菜了吧》(8)我们开始做一个数字小游戏吧

本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新&#xff0c;包括别的语言以及实战都将使用对话的方式进行教学&#xff0c;基础编程语言教学适用于零基础小白&#xff0c;之后实战课程也将会逐步更新。 若…

Microsoft SQL Server 2019开发版安装配置教程

一、安装cn_sql_server_2019_developer_x64 双击setup.exe进行安转。 点击【安装】。 点击【全新SQL Server独立按住啊或向现有安装添加功能】。 点击【下一步】。

Git提示Please move or remove them before you switch branches.

1 问题 git checkout V1 提示错误如下 error: The following untracked working tree files would be overwritten by checkout:flutter_module/pubspec.lock Please move or remove them before you switch branches. Aborting2 解决办法 git clean -df ../flutter_module…

c语言创建新指针,如何用c语言创建一个指针

您总是可以将指针强制转换为整数&#xff0c;即整数大小比系统中使用的字节指针大3位。然后在向左移动3位后移动指针。然后将位信息存储在最低有效3位上。然后可以用正常算术递增该整数“位指针”。像这样的东西&#xff1a;#include #define bitptr long long#define create_b…

请查收最新的 EF Core 7.0 更新

关注我们作者&#xff1a;Jeremy Likness排版&#xff1a;Rani近期.NET 数据团队宣布了 EF Core 7.0 (EF7)的第四个预览版。除了bug修复和更大功能的基础工作外&#xff0c;此预览版还包括以确保转换器和比较器由类型映射处理&#xff0c;并支持将转换器与值生成器一起使用。请…