springboot集成redis

springboot集成redis
  • lettcus与jedis的区别:
    jedis链接Redis服务器是直连模式,当多线程模式下使用jedis会存在线程安全问题,解决方案可以通过配置连接池使每个链接专用,这样整体性能就大受影响。
    lettcus基于Netty框架与Redis服务器连接,底层设计中蚕蛹StatusFulRedisConnection。StatusFulRedisConnection自身是线程安全的,可以保障并发访问安全问题,所以一个链接可以被多线程复用。当然Lettcus也支持多连接实例一起工作。

备注:

Spring Boot Data(数据) Redis 中提供了RedisTemplateStringRedisTemplate,其中
StringRedisTemplateRedisTemplate的子类,两个方法基本一致,不同之处主要体现在操作的数据类
型不同,RedisTemplate中的两个泛型都是Object,意味着存储的key和value都可以是一个对象,而
StringRedisTemplate的两个泛型都是String,意味着StringRedisTemplate的key和value都只能是
字符串。
注意: 使用RedisTemplate默认是将对象序列化到Redis,所以放入的对象必须实现对象序列化接口
  • 集成lettcus
引入jar包: 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

资源文件配置:

spring:
  redis:
    host: localhost
    port: 6379
    password: 123456
    client-type: jedis

测试类:

@SpringBootTest(classes = App.class)
public class RedisTest {
    @Test
    public void SetTest(@Autowired RedisTemplate redisTemplate){
        ValueOperations value = redisTemplate.opsForValue();
        value.set("springBoot","RedisOnSpringBoot123");
    }
    @Test
    public void GetTest(@Autowired RedisTemplate redisTemplate){
        ValueOperations value = redisTemplate.opsForValue();
        Object o = value.get("springBoot");
        System.out.println(o);
    }
}
  • 集成jedis

引入jar包:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>

资源文件配置:

spring:
  redis:
    host: localhost
    port: 6379
    password: 123456
    client-type: jedis

测试类:

@SpringBootTest(classes = App.class)
public class RedisTest {
    @Test
    public void SetTest(@Autowired RedisTemplate redisTemplate){
        ValueOperations value = redisTemplate.opsForValue();
        value.set("springBoot","RedisOnSpringBoot123");
    }
    @Test
    public void GetTest(@Autowired RedisTemplate redisTemplate){
        ValueOperations value = redisTemplate.opsForValue();
        Object o = value.get("springBoot");
        System.out.println(o);
    }
}
  • Redis实现分布式Session管理

memcache和redis实现session共享的区别
memcache
memcache和tomcat的兼容性不是很好
memcache是基于与tomcat做的全局session管理,不需要对部署在tomcat上的应用做相应的处理
在这里插入图片描述
redis是基于应用做的session管理
在这里插入图片描述
引入依赖:

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

资源文件配置:

server:
  port: 8989
  servlet:
    context-path: /dev
spring:
  redis:
    host: localhost
    port: 6379
    password: 123456
    database: 0

配置类:

@Configuration
@EnableRedisHttpSession
public class RedisSessionManager {
}

测试类

@Controller
@RequestMapping("/hello")
public class TestController {

    @RequestMapping("/abc")
    public void test(HttpServletRequest request, HttpServletResponse response) throws IOException {
        List<String> list = (List<String>) request.getSession().getAttribute("list");
        if (list == null) {
            list = new ArrayList<>();
        }
        list.add("abc");
        request.getSession().setAttribute("list", list);
        response.getWriter().println("size:"+list.size());
        response.getWriter().println("sessionId:"+request.getSession().getId());
    }
}

测试url:
http://localhost:8989/dev/hello/abc

测试结果:
在这里插入图片描述

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值