您好,欢迎来到测品娱乐。
搜索
您的当前位置:首页Spring Boot整合Redis

Spring Boot整合Redis

来源:测品娱乐

Spring Boot整合Redis简单示例。

1. 导入依赖

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

2. 配置连接

spring:
  redis:
    host: 127.0.0.1
    port: 6379

3. 测试

@SpringBootTest
class SpringbootTestApplicationTests {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    void testRedis(){
        // redisTemplate    操作不同的数据类型
        // opsForValue      操作字符串类型
        // opsForList       操作列表类型
        // opsForHash       操作哈希类型
        // opsForSet        操作集合类型
        // opsForZSet

        redisTemplate.opsForValue().set("username", "zhangsan");
        System.out.println(redisTemplate.opsForValue().get("username"));

        //获取redis的连接对象
//        RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
//        connection.flushDb();
    }

}

打印结果:

@Component
@AllArgsConstructor
@NoArgsConstructor
@Data
public class People {
    private String name;
    private Integer age;
}

然后,测试set一个对象,会出现报错:序列化异常,无法序列化。

@SpringBootTest
class SpringbootTestApplicationTests {
    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    void testRedis2(){
        People people = new People("张三", 18);
        redisTemplate.opsForValue().set("people", people);
        System.out.println(redisTemplate.opsForValue().get("people"));
    }
    
}

打印结果:

@Component
@AllArgsConstructor
@NoArgsConstructor
@Data
public class People implements Serializable {
    private String name;
    private Integer age;
}

最后,可以看到set成功。
打印结果:

自定义redisTemplate

@Configuration
public class RedisConfig {

    //自定义redisTemplate
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);

        // 使用StringRedisSerializer来序列化和反序列化
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();

        // 使用Jackson2JsonRedisSerializer来序列化和反序列化
        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        // 设置对象映射器的可见性,使所有属性都可以被序列化和反序列化
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);

        // 启用默认类型信息,以便在序列化和反序列化时处理多态情况
        objectMapper.activateDefaultTyping(
                objectMapper.getPolymorphicTypeValidator(), //使用getPolymorphicTypeValidator获取多态类型验证器
                ObjectMapper.DefaultTyping.NON_FINAL,       //设置默认类型检测策略为NON_FINAL,即对非最终类进行类型检测
                JsonTypeInfo.As.PROPERTY                    //设置类型信息存储方式为PROPERTY,即将类型信息作为属性存储在JSON中
        );
        serializer.setObjectMapper(objectMapper);
        // 配置key和value的序列化模式
        template.setKeySerializer(stringRedisSerializer);
        template.setValueSerializer(serializer);
        // 配置hash key和hash value的序列化模式
        template.setHashKeySerializer(stringRedisSerializer);
        template.setHashValueSerializer(serializer);
        template.afterPropertiesSet();

        return template;
    }

}

重新执行测试方法,查看redis中的key:

4. 连接远程服务器上的redis

以阿里云服务器为例,连接远程服务器上的redis,步骤如下:

1. 设置服务器上redis配置
bind 127.0.0.1		#绑定ip
protected-mode yes	#保护模式

bind 默认是所有可用,可以看到配置文件是注释掉的。
bind 127.0.0.1 只能在本地访问,想要远程访问可以如下3种方式,任选一种。
1、#bind 127.0.0.1 (注释掉bind,默认所有可用。)
2、bind * -:😗 (使用 * 通配,像默认一样,所有可用。)
3、bind 访问端的本机IP(绑定访问端的本机IP,只有这个IP可以访问。想要知道自己电脑的本机IP可以在百度搜索IP,可以看到“IP查询”->“本机IP”。)

2. 设置云服务器安全组

在安全组中添加入方向和出方向规则,开放redis的6379端口。

3. 设置云服务器防火墙

防火墙开放端口6379。

firewall-cmd --zone=public --add-port=6379/tcp --permanent
#使更改生效
firewall-cmd --reload
4. 测试
  • telnet 服务器IP 6379 (确保远程redis服务端已启动,端口6379被监听)
  • 使用本地redis客户端连接远程redis服务端

    至此,测试连接成功。
5. 程序测试

修改配置连接

spring:
  redis:
    host: 服务器IP
    port: 6379

启动测试方法testRedis2。
执行成功,打印结果:

查看服务器上的redis中的key:

如何在Linux系统上安装Redis,请查看Linux上安装Redis。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- cepb.cn 版权所有 湘ICP备2022005869号-7

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务