Redis可以用作分布式共享session的解决方案

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Configuration;

import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

import org.springframework.session.web.http.DefaultCookieSerializer;

import org.springframework.session.web.http.CookieSerializer;

@Configuration

@EnableRedisHttpSession

public class RedisSessionConfig {

复制代码
@Autowired
public void configureSession(CookieSerializer cookieSerializer) {
    // 自定义cookie的相关配置
    cookieSerializer.setCookieName("SESSION_ID");
    cookieSerializer.setCookiePath("/");
    cookieSerializer.setDomainNamePattern("^.+?\\.(\\w+\\.[a-z]+)$");
}

@Bean
public CookieSerializer cookieSerializer() {
    return new DefaultCookieSerializer();
}

}

上述代码通过@EnableRedisHttpSession注解启用Redis作为session存储,并自定义了cookie的相关配置。可以根据需要进行修改。

在项目中使用Redis作为session存储后,可以通过注入HttpSession对象来访问和操作session中的数据。以下是一个简单的示例

import javax.servlet.http.HttpSession;

@RestController

public class SessionController {

复制代码
@Autowired
private HttpSession session;

@GetMapping("/setSession")
public void setSession() {
    session.setAttribute("key", "value");
}

@GetMapping("/getSession")
public String getSession() {
    String value = (String) session.getAttribute("key");
    return value != null ? value : "Session not found";
}

}

在上述示例中,setSession方法用于设置session的值,getSession方法用于获取session的值。

需要注意的是,为了使session能够跨域名共享,需要设置cookie的domain属性为公共域名。在上述示例中,通过设置DefaultCookieSerializer的domainNamePattern属性,可以将cookie的domain属性设置为公共域名。请根据实际情况进行调整。

相关推荐
goehou42 分钟前
MCP 查数实战:让 LLM 安全地查数据库(只读账号、SQL 校验、参数漂移)
数据库·ai·llm·教程·mcp·function calling
我不会插花弄玉1 小时前
7.函数【由浅入深-MySQL】
android·数据库·mysql
周小董1 小时前
[1369]Windows上安装PostgreSQL
数据库·windows·postgresql
一只积极向上的小咸鱼3 小时前
第一性原理思考:从拆解问题到用实验检验答案
数据库
这个DBA有点耶4 小时前
时序数据库InfluxDB高基数问题深度拆解:内存索引膨胀机制与OOM完整链路
数据库·架构·dba
加油yx4 小时前
MySQL数据类型
数据库·mysql
行百里er4 小时前
Redis 模块——JSON、向量搜索与时序
redis·后端
蓝胖的四次元口袋4 小时前
Redis知识梳理(1)
数据库·redis·缓存
Pniubi5 小时前
分布式锁分类讲解
分布式
夜雪一千5 小时前
MySQL 数据加密实战:从传输、存储到字段级加密,分清场景不踩坑
数据库·mysql