03、SpringBoot实战:集成Redis

本文详细介绍了在Spring Boot项目中通过Jedis客户端集成Redis的完整步骤,包括Windows下启动Redis、Maven依赖配置、application.yml参数详解、RedisTemplate序列化配置以及多种数据类型的操作测试,适合Java开发者快速上手。

目录

    • 1.简介
  • 2.版本
  • 3.在 Windows 下启动 Redis
  • 4.集成步骤
  • 5.知识点补充

1.简介

Spring Boot 使用 Jedis 客户端 集成 Redis。

2.版本

  • springVersion: 5.2.6.RELEASE
  • springBootVersion: 2.3.0.RELEASE

3.在 Windows 下启动 Redis

在redis 文件夹下面,双击 run.bat 启动 Redis

 

4.集成步骤

1.maven 坐标

<!-- Redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redi![在这里插入图片描述](https://cdn.cxykk.com/20201209165555516.png)
s</artifactId>
</dependency>

2.application.yml

spring:
  #redis基础配置
  redis:
    # Redis服务器地址
    host: 127.0.0.1
    # Redis数据库索引默认为0
    database: 0
    # Redis服务器连接端口
    port: 6379
    # 链接超时时间 单位 ms毫秒
    timeout: 3000
    # 密码
    password: 123456
    # 连接池配置jedis/lettuce
    jedis:
      pool:
        # 连接池中的最大空闲连接 默认 8
        max-active: 8
        # 连接池最大阻塞等待时间使用负值表示没有限制 默认 -1
        max-wait: -1
        # 连接池中的最大空闲连接 默认 8
        max-idle: 8
        # 连接池中的最小空闲连接 默认 0
        min-idle: 0

3.RedisConfig.java

@Configuration
public class RedisConfig {
   
     
    /**
     * 配置RedisTemplate
     *
     * @param redisConnectionFactory 连接工厂
     * @return RedisTemplate
     */
    @Bean
    public RedisTemplate<String, Serializable> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
   
     
        RedisTemplate<String, Serializable> redisTemplate = new RedisTemplate<>();
        //设置key的存储方式为字符串
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        //设置为value的存储方式为JDK二进制序列化方式,还有jackson序列化方式(Jackson2JsonRedisSerialize)
        redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
        //设置连接工厂
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }
}

4. 测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBootRedisApplicationTests {
   
     

    @Autowired
    private RedisTemplate<String, String> strRedisTemplate;
    @Autowired
    private RedisTemplate<String, Serializable> serializableRedisTemplate;

    @Test
    public void testString1() {
   
     
        strRedisTemplate.opsForValue().set("redis_test:strKey", "acgkaka");
        System.out.println(strRedisTemplate.opsForValue().get("redis_test:strKey"));
    }

    @Test
    public void testString2() {
   
     
        strRedisTemplate.boundValueOps("redis_test:strKey222").set("acgkaka222");
        System.out.println(strRedisTemplate.boundValueOps("redis_test:strKey222").get());
    }

    @Test
    public void testSerializable() {
   
     
        UserEntity user = new UserEntity();
        user.setId(1L);
        user.setUserName("清风烟柳");
        user.setUserSex("男");
        serializableRedisTemplate.opsForValue().set("redis_test:user", user);
        UserEntity user2 = (UserEntity) serializableRedisTemplate.opsForValue().get("redis_test:user");
        System.out.println("user:" + user2.getId() + "," + user2.getUserName() + "," + user2.getUserSex());
    }
}

运行结果1:
 

运行结果2:
 

运行结果3:
 

经测试,发现 boundValueOps()opsForValue() 都可以正常存取值,目前没有发现差异。

Redis Desktop Manager

数据1:
 

数据2:
 

数据3:
 

5.知识点补充

 

  • ValueOperations:简单K-V操作
  • HashOperations:针对Map类型的数据操作
  • ListOperations:针对List类型的数据操作
  • SetOperations:Set类型数据操作
  • ClusterOperations:Cluster集群分区操作
  • GeoOperations:地理空间操作
  • HyperLogLogOperations:被用于估计一个 set 中元素数量的概率性的数据结构操作
  • ZSetOperations:ZSet类型数据操作(ZSet是有序Set)

源码地址:https://github.com/ACGkaka/spring-boot-redis

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: