Redis实现,分布式Session共享

server/2025/2/1 12:04:27/

依赖 不指定版本防止冲突 直接用版本依赖

 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/> <!-- lookup parent from repository --></parent>
//直接使用依赖的版本<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis --><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId></dependency><dependencies>

 yml文件配置

 配置类 解决  Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' 报错 我解决了好长时间,后面有具体的redis配置细节

@Configuration
public class RedisHttpSessionConfig {/***  解决redis集群环境没有开启Keyspace notifications导致的**  Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in class path resource** */@Beanpublic static ConfigureRedisAction configureRedisAction() {return ConfigureRedisAction.NO_OP;}
}

启动两个客户端,8080端口 9000端口 调用接口 

8080端口请求登录 后端记录登陆状态 

9090端口拿到登陆状态 

 查看redis存储数据,redis实现session共享成功

 配置细节

redis文档 根目录下 redis.conf

1、文件将里面的daemonize no 改成 yes,让服务在后台启动

2、文件将里面的requirepass改成自己的密码,此密码为以后客户端验证身份使用

3、文件里面的bind,修改为指定的IP地址即为只允许该IP地址访问,注释即为允许所有主机访问

4、文件里面的protected-mode改为no,同意远程连接访问
5、
redis集群环境没有开启Keyspace notifications 上面配置类解决了这个问题 这里可以忽略

防火墙开启,开放redis端口或者其他服务的端口

关闭防火墙

systemctl stop firewalld

开启防火墙

systemctl start firewalld

开放指定端口

firewall-cmd --zone=public --add-port=6379/tcp --permanent

关闭指定接口

firewall-cmd --zone=public --remove-port=6379/tcp --permanent

重新加载防火墙配置

firewall-cmd --reload

业务代码实现接口

 /*** 用户登录** @param userLoginRequest* @param request* @return*/@PostMapping("/login")public BaseResponse<User> userLogin(@RequestBody UserLoginRequest userLoginRequest, HttpServletRequest request) {if (userLoginRequest == null) {return ResultUtils.error(ErrorCode.PARAMS_ERROR);}String userAccount = userLoginRequest.getUserAccount();String userPassword = userLoginRequest.getUserPassword();if (StringUtils.isAnyBlank(userAccount, userPassword)) {return ResultUtils.error(ErrorCode.PARAMS_ERROR);}User user = userService.userLogin(userAccount, userPassword, request);return ResultUtils.success(user);}
实现类添加对session的保存 自动保存在redis
  /*** 用户登录** @param userAccount  用户账户* @param userPassword 用户密码* @param request* @return 脱敏后的用户信息*/@Overridepublic User userLogin(String userAccount, String userPassword, HttpServletRequest request) {.....// 4. 记录用户的登录态request.getSession().setAttribute(USER_LOGIN_STATE, safetyUser);return safetyUser;}


http://www.ppmy.cn/server/164060.html

相关文章

VUE之组件通信(一)

1、props 概述&#xff1a;props是使用频率最高的一种通信方式&#xff0c;常用与&#xff1a;父<——>子。 若 父传子&#xff1a;属性值是非函数。若 子传父&#xff1a;属性值是函数。 父组件&#xff1a; <template><div class"father">&l…

360大数据面试题及参考答案

数据清理有哪些方法? 数据清理是指发现并纠正数据文件中可识别的错误,包括检查数据一致性,处理无效值和缺失值等。常见的数据清理方法有以下几种: 去重处理:数据中可能存在重复的记录,这不仅会占用存储空间,还可能影响分析结果。通过对比每条记录的关键属性,若所有关键…

【橘子ES】使用docker搭建ELK环境

我们在搭建ELK环境的时候&#xff0c;一般有三种选择。 1、本地安装&#xff0c;你可以到官网把安装包下载下来然后解压&#xff0c;修改配置文件&#xff0c;然后启动&#xff0c;这样比较麻烦&#xff0c;比较考验操作。那有的玩家就要问了&#xff0c;这种操作太吃手感了&am…

Linux(19)——使用正则表达式匹配文本

新年快乐&#xff01; 目录 一、正则表达式&#xff1a; 二、通过 grep 匹配正则表达式&#xff1a; 三、查找匹配项&#xff1a; 一、正则表达式&#xff1a; 正则表达式使用模式匹配机制查找特定内容&#xff0c;vim、grep 和 less 命令都可以使用正则表达式&#xff0c;P…

Ubuntu介绍、与centos的区别、基于VMware安装Ubuntu Server 22.04、配置远程连接、安装jdk+Tomcat

目录 ?编辑 一、Ubuntu22.04介绍 二、Ubuntu与Centos的区别 三、基于VMware安装Ubuntu Server 22.04 下载 VMware安装 1.创建新的虚拟机 2.选择类型配置 3.虚拟机硬件兼容性 4.安装客户机操作系统 5.选择客户机操作系统 6.命名虚拟机 7.处理器配置 8.虚拟机内存…

【Leetcode 热题 100】62. 不同路径

问题背景 一个机器人位于一个 m n m \times n mn 网格的左上角。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。 问总共有多少条不同的路径&#xff1f; 数据约束 1 ≤ m , n ≤ 100 1 \le m, n \le 100 1≤m,n≤100题目数据保证答案小于等于 2 1 0…

深入解析 Linux 内核中的页面错误处理机制

在现代操作系统中,页面错误(Page Fault)是内存管理的重要组成部分。当程序试图访问未映射到物理内存的虚拟内存地址时,CPU 会触发页面错误异常。Linux 内核通过一系列复杂的机制来处理这些异常,确保系统的稳定性和性能。本文将深入解析 Linux 内核中处理页面错误的核心代码…

Ansible自动化运维实战--yaml的使用和配置(7/8)

文章目录 一、YAML 基本语法1.1. 缩进1.2. 注释1.3. 列表1.4. 字典 二、Ansible 中 YAML 的应用2.1. Ansible 剧本&#xff08;Playbooks&#xff09;2.2. 变量定义2.3. 角色&#xff08;Roles&#xff09;2.4. Inventory 文件2.5. 数据类型2.6. 引用变量 在 Ansible 里&#x…