SpringBoot 整合 redis 实战

10 篇文章 0 订阅
4 篇文章 0 订阅

本文基于 SpringBoot,RedisTemplate API 操作 Redis 缓存,相较于Jedis客户端,RedisTemplate跟 springboot 的集成性更好,但是性能比 Jedis 差

1. 导入 spring-boot-starter-data-redis 官方依赖

    <!-- spring-boot-starter-data-redis -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

2. 配置连接属性: application.properties

spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=123456

server.port=80

3. 编写一个简单测试的 RedisController

  前端发送请求:http://localhost/hello

@RestController
public class RedisController {
    @Resource
    RedisTemplate<String, String> redisTemplate;
    @GetMapping(value = "/hello")
    public Map<String,Object> getHello(){

        Map<String,Object> map = new HashMap<>();

        redisTemplate.opsForValue().set("name","zhangsan");
        redisTemplate.opsForValue().set("age","68");

        redisTemplate.expire("name",20, TimeUnit.HOURS);

        map.put("name:",redisTemplate.opsForValue().get("name"));
        map.put("age:",redisTemplate.opsForValue().get("age"));

        return map;
    }
}

3. 集成 spring session redis

     传统的单机服务器的情况下,Session 直接保存在服务器上,随着架构向集群模式演进,传统的session管理不能满足高并发的需求。

例如:现在有三台 web 服务器,客户端请求被 nginx 反向代理到其中某一台上,用户本次的Session 数据就被保存到该台服务器上,如果用户下次的请求被负载到另外一台服务器上,当前服务器拿不到用户的 Session ,那么该服务器就不能返回给用户请求的数据

集群服务器共享 Session:

        Spring Session 主要解决了分布式场景下 Session 共享的问题,Spring Session 可在程序中直接替换HttpSession,无需修改任何代码,能方便地与 Spring Security 集成,一般在分布式场景下,将用户会话 Session 保存在缓存中,能够给用户提供较快的 Session 验证速度

1)引入 spring session redis 依赖

 <dependency>
     <groupId>org.springframework.session</groupId>
     <artifactId>spring-session-data-redis</artifactId>
 </dependency>

2)编写 LoginController

  前端请求:http://localhost/login?username=lisi&password=123456

@RestController
public class LoginController {
    @Resource
    RedisTemplate<String, String> redisTemplate;
    @GetMapping("/login")
    public String login(String username, String password, HttpSession session){
        /**
         * 将用户登录信息放进 session
         * spring session redis 会自动将session信息存入 redis 缓存
         * */
        session.setAttribute("username",username);
        session.setAttribute("password",password);
        
        String username1 = redisTemplate.opsForValue().get("username");
        String password1 = redisTemplate.opsForValue().get("password");

        return "登陆成功"+username1+" "+password1;

    }
}

   可以看到此时 redis 中已经缓存了用户的 session 信息

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值