SpringBoot整合Redis客户端

清疚 2023-10-07 20:35 80阅读 0赞

一、SpringBoot整合Redis的步骤

1. 导入SpringBoot整合Redis坐标,starter

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-redis</artifactId>
  4. </dependency>

2. 在yml中的配置

  1. spring:
  2. redis:
  3. host: localhost
  4. port: 6379

3. RedisTemplate提供操作各种数据存储类型的接口API

3.1 如操作Hash数据存储类型的opsForHash

  1. @PostMapping("/setcode")
  2. private String setPhoneCode(@RequestBody Phone phone){
  3. //随机生成6位验证码,设置过期时间
  4. String code = RandomStringUtils.randomNumeric(6);
  5. HashOperations ops = redisTemplate.opsForHash();
  6. ops.put("phone",phone.getPhone(),code);
  7. redisTemplate.expire("phone",60, TimeUnit.SECONDS);
  8. return "发送的验证码为:"+code;
  9. }
  • 操作字符串:redisTemplate.opsForValue();
  • 操作列表:redisTemplate.opsForList();
  • 操作集合:redisTemplate.opsForSet();

3.2 生成随机数,依赖commons-lang3包

  1. <dependency>
  2. <groupId>org.apache.commons</groupId>
  3. <artifactId>commons-lang3</artifactId>
  4. </dependency>

二、RedisTemplate与StringRedisTemplate(推荐和常使用)的区别

2.1 使用RedisTemplate遇到的问题

在使用RedisTemplate获取使用通过客户端(redis-cli.exe)设置的key-value值时,发现获取不到。可以通过把RedisTemplate类替换成StringRedisTemplate来解决。在实际应用中,我们也常常使用StringRedisTemplate。

三、Springboot整合Redis

3.1 在SpringBoot中整合的Redis客户端,默认使用的是lettuce,也可以替换成jedis

  1. spring:
  2. redis:
  3. host: localhost
  4. port: 6379
  5. #client-type默认是lettuce
  6. client-type: lettuce

3.2 使用jedis客户端的步骤

  1. 配置坐标


    redis.clients
    jedis
  2. 配置yml文件

    spring:
    redis:

    1. host: localhost
    2. port: 6379
    3. client-type: jedis
  3. 使用

与lettuce完全一样,都是使用RedisTemplate或StringRedisTemplate

  1. lettcus与jedis区别

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

发表评论

表情:
评论列表 (有 0 条评论,80人围观)

还没有评论,来说两句吧...

相关阅读