【Redis】SpringBoot整合Redis入门基础应用及开发笔记

本文讲解了SpringBoot整合Redis的入门基本应用,包括redis的环境配置以及简单的功能使用

环境:

centOS7+Redis 6.2.6+SpringBoot 2.6.4

安装配置:

首先从官网下载Redis

【Redis官网下载:  Redis】并解压,

然后配置环境

yum install gcc-c++
make
make install

然后我们需要对redis.conf配置文件进行一些基础的配置,打开redis.conf可见如下配置

bind 127.0.0.1 -::1

绑定了可以通过什么ip对redis进行访问,这里先将其注释,以防无法远程访问

protected-mode no

配置保护模式,设置为no开放远程访问

port 6379

端口号

timeout 5000
连接超时时间配置

daemonize yes
开启守护进程

requirepass 密码

redis的访问密码

如果在远程连接的时候无法连接,别忘了关闭防火墙和设置组策略

service iptables stop //关闭iptable防火墙

systemctl stop firewalld //关闭firewalld防火墙

启动Redis

执行命令:

redis-server redis.conf

客户端访问:

redis-cli

如果是远程访问,可加上host与port :

 redis-cli -h xx.xx.xx.xx -p 6379

测试连接

命令行输入ping,返回pong即连接成功

127.0.0.1:6379> ping
PONG

通过命令行简单的测试下set

127.0.0.1:6379> set user test1
OK
127.0.0.1:6379> GETRANGE user 0 -1
"test1"

至此,环境配置成功。

SpringBoot整合Redis

依赖

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

配置文件application.yml

spring:
  redis:
    host: 127.0.0.1 #redis的ip地址
    port: 6379
    timeout: 5000   #连接超时
    password: 密码

基本功能测试

简单的存取一下字符串

    //获取RedisTemplate对象
    @Autowired
    private RedisTemplate<String, String> redisTemplate;
    
    @Test
    void contextLoads() {
        //set字符串
        redisTemplate.opsForValue().set("user","test1");
        System.out.println(redisTemplate.opsForValue().get("user"));
    }

成功存入redis 

127.0.0.1:6379> get user
"test1"

自定义RedisTemplate配置类

自定义序列化方式,以便于以Json格式存取实体对象,默认情况下会使用JdkSerializationRedisSerializer进行序列化

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        //配置连接工厂
        template.setConnectionFactory(connectionFactory);
        //使用Jackson配置Object的序列化
        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
        //通过ObjectMapper将对象转换为JSON字符串
        ObjectMapper mapper = new ObjectMapper();
        mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        serializer.setObjectMapper(mapper);
        //字符串序列化
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        //key设置为字符串序列化
        template.setKeySerializer(stringRedisSerializer);
        template.setHashKeySerializer(stringRedisSerializer);
        //Value设置为Object序列化
        template.setValueSerializer(serializer);
        template.setHashKeySerializer(serializer);

        template.afterPropertiesSet();
        return template;
    }
}

测试实体类的序列化

自定义一个User类,实现Serializable接口

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
    private Integer id;
    private String username;
}

使用刚才自定义的 RedisTemplate<String, Object>,测试实体对象的序列化

    @Autowired
    @Qualifier("redisTemplate")
    private RedisTemplate<String, Object> redisTemplate; 
  
    @Test
    public void serializableTest(){
        //set值
        redisTemplate.opsForValue().set("user1",new User(1,"name"));
        //get值
        System.out.println(redisTemplate.opsForValue().get("user1"));
    }

User对象已经以json的形式序列化存储到redis中了 

127.0.0.1:6379> get user1
"{\"id\":1,\"username\":\"name\"}"

猜你喜欢

转载自blog.csdn.net/yscjhghngh/article/details/123318553