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

相关推荐
BryceBorder9 分钟前
SCAU--数据库
数据库·oracle·dba
ohoy12 分钟前
RedisTemplate 使用之Set
java·开发语言·redis
有味道的男人14 分钟前
京东关键词API接口获取
数据库
深蓝电商API24 分钟前
Scrapy+Rredis实现分布式爬虫入门与优化
分布式·爬虫·scrapy
罗光记31 分钟前
《人工智能安全治理研究报告(2025年)发布
数据库·其他·百度·新浪微博
202321336054 刘1 小时前
Linux常用命令分类整理
linux·运维·数据库
Q741_1471 小时前
海致星图招聘 数据库内核研发实习生 一轮笔试 总结复盘(2) 作答语言:C/C++ 哈夫曼编码 LRU
c语言·数据库·c++·算法·笔试·哈夫曼编码·哈夫曼树
齐 飞1 小时前
快速删除mysql表中所有数据-TRUNCATE TABLE
数据库·mysql
想摆烂的不会研究的研究生1 小时前
每日八股——Redis(2)
数据库·redis·缓存
optimistic_chen1 小时前
【Redis系列】主从复制
linux·数据库·redis·缓存·中间件·命令行·主从复制