本文节选自《Netkiller Java 手札》
Spring boot 将 Session 放入 Redis
11.19. Session
11.19.1. Redis
11.19.1.1. Maven
增加下面代码到pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
11.19.1.2. application.properties
spring.session.store-type=redis 将Session 存储在Redis中
spring.redis.database=0 spring.redis.host=192.168.4.1 spring.redis.port=6379 #spring.redis.password= spring.redis.pool.max-active=8 spring.redis.pool.max-wait=30 spring.redis.pool.max-idle=8 spring.redis.pool.min-idle=0 spring.redis.timeout=10 spring.session.store-type=redis
11.19.1.3. Application
package cn.netkiller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
@EnableMongoRepositories
@EnableJpaRepositories
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
RedisHttpSessionConfig.java
package cn.netkiller.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
@Configuration
@EnableRedisHttpSession
public class RedisHttpSessionConfig {
public RedisHttpSessionConfig() {
// TODO Auto-generated constructor stub
}
}
11.19.2. 测试 Session
package cn.netkiller.web;
import java.util.Date;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
public TestController() {
// TODO Auto-generated constructor stub
}
@RequestMapping("/session/set")
@ResponseBody
public String set(HttpSession session) {
String key = "test";
session.setAttribute(key, new Date());
return key;
}
@RequestMapping("/session/get")
@ResponseBody
public String get(HttpSession session) {
String value = (String) session.getAttribute("test").toString();
return value;
}
}
keys spring:session:* 查看 Session Key
$ telnet 192.168.4.1 6379 Connecting to 192.168.4.1:6379... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. keys spring:session:* *7 $68 spring:session:sessions:expires:a510f46f-0a2f-4649-af05-34bd750562c1 $40 spring:session:expirations:1476100200000 $40 spring:session:expirations:1476098400000 $60 spring:session:sessions:f6494a2f-591e-42ba-b381-ce2596f4046d $60 spring:session:sessions:a510f46f-0a2f-4649-af05-34bd750562c1 $112 spring:session:index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME:user $60 spring:session:sessions:627018c8-243e-43ac-87b9-fc07f130c899
作者相关文章:
Spring boot with Spring security
Spring RestFul and RestTemplate
Spring boot with Velocity template
Spring Boot · Mongo Repository
作者:netkiller
网站:http://www.netkiller.cn
邮箱:netkiller@msn.com
公众号:netkiller-ebook
关注作者公众号,每日推送原创文章。如果已有什么建议,请给我留言。

文章转载自netkiller,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




