spring session搭配redis的简单使用

当我们访问 http://localhost:8858/session/get这样一个本地接口时,会通过该地址访问到tooncat服务器,然后服务器会判断发送请求的客户端是否建立过session会话,如果没有则重新建立一个session会话,如果有则继续使用该session会话。如何理解呢?就好比你在电话亭使用一块钱打电话,限时10分钟,然后我们通过电话号码(对应我们的接口访问地址)找到对方,当对方接听时开始有效计时,自此两者就建立一条通话连接(对应web服务器中的session会话)我们在有效期内可以随时进行信息交流。

开始使用,引入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--实现Redis的自动化配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <!--排除lettuce连接池,lettuce会经常出现莫名错误,稳定性也不如jedis-->
            <exclusions>
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 引入 Jedis 的依赖,这样 Spring Boot可以实现对 Jedis 的自动化配置 -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
        <!--实现Spring Session对Redis的自动化配置-->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>

添加相关配置

# 应用名称
spring:
  application:
    name: spring-session-redis
  # 对应 RedisProperties 类
  redis:
    host: localhost
    port: 6379
    password: 479368      # Redis 服务器密码,默认为空。生产中,一定要设置 Redis 密码!
    database: 0           # Redis 数据库号,默认为 0
    timeout: 15000        # Redis 连接超时时间,单位:毫秒。
    # 对应 RedisProperties.Jedis 内部类
    jedis:
      pool:
        max-active: 8     # 连接池最大连接数,默认为 8 。使用负数表示没有限制    同一时间最大只能执行8条sql语句,每执行一条语句就会和数据库建立一个连接
        max-idle: 8       # 默认连接数最大空闲的连接数,默认为 8 。使用负数表示没有限制。
        min-idle: 0       # 默认连接池最小空闲的连接数,默认为 0 。允许设置 0 和 正数。
        max-wait: -1      # 连接池最大阻塞等待时间,单位:毫秒。默认为 -1 ,表示不限制。    执行语句到数据库响应数据的时间

server:
  port: 8858

配置redis序列化,java默认使用jdk自带的序列化配置,可读性很差,我们进行替换

@Configuration
@EnableRedisHttpSession         //自动化配置Spring Session使用Redis作为数据源
public class SessionConfig {

    //默认情况下,Java采用自带的序列化方式 ,可读性很差,所以进行替换。
    @Bean
    public StringRedisSerializer stringRedisSerializer(){
        return StringRedisSerializer.UTF_8;
    }
}

新建一个SessionController接口测试类

@RestController
@RequestMapping("/session")
public class SessionController {


    //HttpSession相当于会话通道,进行信息交流
    @GetMapping("/set")
    public void set(HttpSession session,
                    @RequestParam("key") String key,
                    @RequestParam("value") Object value){
       session.setAttribute(key,value);
    }

    @GetMapping("/get")
    public Map<String,Object> getAll(HttpSession session){
        Map<String, Object> map = new HashMap<>();
        Enumeration<String> enumeration = session.getAttributeNames();
        while(enumeration.hasMoreElements()){
            String key = enumeration.nextElement();
            Object value = session.getAttribute(key);
            map.put(key,value);
        }
        return map;
    }
}

最后启动应用,先查询redis确定访问前情况,可以看到什么都没有

访问lhttp://localhost:8858/session/get,再查看redis,可以看到多了一条数据,这就是session

 

 最后安利我使用的redis客户端连接软件----QuickRedis这是一款免费开源好用的redis连接工具

下载地址:QuickRedis下载地址

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值