技术标签: session共享 spring session SpringBoot 分布式 redis
springboot:各分布式项目版本最好一样。
redis:5.0.5,单机。
https://gitee.com/gbkill/springsession.git
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--session-->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
# Redis settings
spring.redis.database=0
spring.redis.host=192.168.100.11
spring.redis.port=6379
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=100
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=3000
# 存储方式
spring.session.store-type=redis
package com.example.springsession.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.thymeleaf.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
@RestController
@Slf4j
public class HelloCo {
@RequestMapping("/hello")
public String hello(HttpServletRequest request) {
String userId = (String) request.getSession().getAttribute("userId");
if (StringUtils.isEmpty(userId)) {
log.info("用户session_id为空!");
request.getSession().setAttribute("userId", "001_lxf");
} else {
log.info("用户session_id:" + userId);
}
return userId + "ssss " + request.getSession().getId();
}
}
1. 打包项目
2. 启动两个项目
java -jar xxx --server.port=8081
java -jar xxx --server.port=8082
3. 先后访问
4. redis中存储
文章浏览阅读297次。https://forums.xamarin.com/discussion/3304/debugger-fails-to-start-the-program-mono-has-exited-with-code-0-0x0
文章浏览阅读207次。第一步:打开"/include/common.func.php",该文件5.6版本默认存在,5.5的不存在自己建一个。然后在该文件中加入一个函数,代码如下:function pasterTempletDiy($path){ require_once(DEDEINC."/arc.partview.class.php"); global $cfg_basedir,$cfg_templet..._php调用htm模版
文章浏览阅读3.3k次。问题从网上得知 /etc/resolv.conf中的DNS配置是从/etc/resolvconf/resolv.conf.d/head中加载而来,所以每回改resolv.conf都会失效,在此文件里面已经有说明打开/etc/resolv.conf内容如下:jie@jie:~$ cat /etc/resolv.conf# Dynamic resolv.conf(5) file for gli..._/etc/resolv.conf 不存在
文章浏览阅读3.1w次,点赞4次,收藏8次。启动SQL Server Agent服务(开机启动) 方法一、在命令提示符下,输入下列命令之一:net start "SQL Server Agent (MSSQLSERVER)" (这个无法使用)- 或 -net start SQLSERVERAGENT ( 我是用这个启动的)方法二、_sqlserver2012agent
文章浏览阅读653次,点赞2次,收藏4次。java怎么学才能学好?IT行业近年来的发展可谓是相当不错,java程序员更是最受欢迎的职业,很多想进入IT行业的朋友都会选择学习java,因为它的应用广泛,就业机会比较多,但是他们都比较关心一个问题,那就是java应该怎么学才好?1、学好基本语法,明确Java的特点学习java语言就是学习语法、函数、结构等,根据java语法编写代码。语法是学习Java的基础。在学习之初可能很难理解。没问题。这是正常现象。你必须多读,多问,多练习。你会慢慢开始学习的。2、代码上添加注释,来解释代码注释的功能_java怎么学才能学好
文章浏览阅读1.2k次。GTK+ 多线程操作操作 UI 元素时,早期一般都是使用gdk_thread_enter() / gdk_thread_leave() 来进行线程间同步。但是 GTK+ 3.6 开始,不建议使用该函数对。仔细考虑下,似乎有些道理。频繁的调用gdk_thread_enter() / gdk_thread_leave()确实影响 GTK+ 的性能,并且容易出现莫名的错误。但是,如何解决在多_gtk多线程
文章浏览阅读2.9k次。有人说phper的深入要从研读mvc框架开始,我跳了一个常用的CI框架入手,一是因为 CI框架简单轻巧,二是原来用的最多的就是CI框架了。 1、首先来看CI的整体架构图:上图中是我最新下载CI3.0版本,application是用户级开发目录,我们关心system系统源码目录,CI的核心代码都在这里了。1、core 系统核心代码2、database数据库_ci 框架 超级类
文章浏览阅读439次。标题:啤酒和饮料 啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。 注意:答案是一个整数。请通过浏览器提交答案。 不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。______________________
文章浏览阅读141次。MVC架构模式常见问题1、MVC的路由选择功能是帮你定义一个URL规则,映射URL到控制器。在“global.asax“文件中写路由映射表。2、可以映射多个URL到同一个映射,只需要添加多条不同Key名字的记录,并且指定同样的控制器和动作。3、使用hyperlink生成连接,可以通过使用ActionLink方法从一个视图链接到另一个视图。4、在MVC中可以通过tempdata,viewdata和viewbag来保持sessions。Temp data -在不同的控制器或动作间转换时保持._enableoptimizations
文章浏览阅读6.7k次,点赞2次,收藏3次。vue实现单选按钮_vuejs按钮单选怎么设置
文章浏览阅读1.3w次,点赞2次,收藏32次。信息采集 一个整数 反转顺序(一般将数存进数组,然后反向输出)下面为本人写的代码(如有错误,请指出,本人新手)://Class1.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespace CSharpTest{ class Class1 {_c#数字反转输出
文章浏览阅读1.3w次。1、背景在Windows系统中,有3种获取鼠标位移信息的方法:WM_MOUSEMOVE, WM_INPUT 和DirectInput。这3种方法中,WM_MOUSEMOVE获取的是鼠标当前在窗口上的绝对位置,通过它可以获取鼠标的屏幕位移;WM_INPUT和DirectInput获取的则是鼠标相对于上一个位置的相对位移,它们就是鼠标实际上的物理位移。事实上,WM_INPUT与DirectInput在_鼠标加速度算法