如何使用Springboot基于Redis快速搭建分布式Session缓存

这篇文章主要介绍了如何使用Spring boot基于redis快速搭建分布式Session缓存的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用Spring boot基于Redis快速搭建分布式Session缓存文章都会有所收获,下面我们一起来看看吧。

为皇姑等地区用户提供了全套网页设计制作服务,及皇姑网站建设行业解决方案。主营业务为成都网站建设、成都网站制作、皇姑网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

使用Spring boot基于Redis快速搭建分布式Session缓存方案

大型web应用中,session的管理非常重要,这是单机存储满足不了的.

通常有以下几种方法:

  1. 将session持久化到数据库中. 但缺点是读写成本太高.

  2. 去session化,比如将信息存储到cookie中. 但缺点是大小有限制,并且不安全.

3 . 将session存储到一个分布式的NoSql数据库中,比如 Redis.

第一步:搭建Spring Boot开发环境

添加maven核心依赖 spring-session-data-redis


        
            org.springframework.session
            spring-session-data-redis
        

在application.properties文件中配置redis连接属性

######   Redis config start ######
spring.redis.database=0
spring.redis.host=192.168.41.60
spring.redis.port=6379
spring.redis.password=
spring.redis.pool.max-active=20
spring.redis.pool.max-wait=-1
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.timeout=0
######   Redis config end ######

第二步:开启 @EnableRedisHttpSession 注解

@Configuration
@EnableRedisHttpSession(redisNamespace = "mysession",maxInactiveIntervalInSeconds = 60*60*24)
public class SessionConfig

@EnableRedisHttpSession注解的源码如下,可以看到可以配置三个参数:

  • maxInactiveIntervalInSeconds :session中的数据的过期时间(不是session在redis中的过期时间)

  • redisNamespace :命名空间,可以配置当前应用的名称,我这里配置了 mysession.

  • redisFlushMode :redis保存session的方式,默认 ON_SAVE
    有两种方式:IMMEDIATE:一旦创建session的时候就立即保存.ON_SAVE:创建session的时候不会保存,但当往session中添加数据的时候就会保存

@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Target({ java.lang.annotation.ElementType.TYPE })
@Documented
@Import(RedisHttpSessionConfiguration.class)
@Configuration
public @interface EnableRedisHttpSession
    int maxInactiveIntervalInSeconds() default 1800;

    String redisNamespace() default "";

    RedisFlushMode redisFlushMode() default

第三步:测试

编写一个controller

@RestController
public class HelloController

    @RequestMapping("/hello/{username}")
    public String hello(HttpSession session, @PathVariable(value = "username") String username) {
        session.setAttribute("username", username);
        return "保存session到Redis成功";
    }

    @RequestMapping("/getName")
    public String getUsername(HttpSession session) {
        String username = (String) session.getAttribute("username");
        return

当浏览器访问 http://localhost:8080/hello/admin 这个链接,

hello方法会接受到 浏览器传过来的参数,并保存在session中,然后再把session保存到Redis中

通过查看redis中的信息可看到如下信息:

其中 spring:session 是自动添加的,我们创建的命名空间 mysession 在这个默认的目录下面

接下来我们再访问 http://localhost:8080/getName ,便可以看到浏览器会显示 刚才我们保存再session中的 admin

关于“如何使用Spring boot基于Redis快速搭建分布式Session缓存”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“如何使用Spring boot基于Redis快速搭建分布式Session缓存”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。


网站栏目:如何使用Springboot基于Redis快速搭建分布式Session缓存
网站链接:http://myzitong.com/article/jiiddd.html