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属性设置为公共域名。请根据实际情况进行调整。

相关推荐
OceanBase数据库官方博客13 分钟前
OceanBase seekdb-cli:专为 AI Agent 设计的数据库接口
数据库·人工智能·oceanbase
i220818 Faiz Ul17 分钟前
二手交易系统|基于springboot + vue二手交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·二手交易系统
敖正炀20 分钟前
高可用架构深度:主从复制、哨兵与 Cluster
redis
kexnjdcncnxjs24 分钟前
如何在Navicat中创建基础数据表_可视化图形界面操作指南
jvm·数据库·python
m0_7407963628 分钟前
CSS如何兼容新旧方案结合响应式容器查询
jvm·数据库·python
IronMurphy35 分钟前
Redis拷打第三讲
数据库·redis·mybatis
楠枬1 小时前
Redis 哨兵
数据库·redis
arronKler1 小时前
数据库设计三大范式
数据库·oracle
敲代码的嘎仔1 小时前
力扣高频SQL基础50题详解
开发语言·数据库·笔记·sql·算法·leetcode·后端开发
jran-1 小时前
MySQL多表操作 查询&子查询&外键约束
数据库·mysql