使用Java连接操作redis(Jedis和SpringBoot整合)

一 Jedis连接redis数据库

maven仓库
使用jedis连接redis,jedis是原生的AIP

1.1新建maven项目

.............

1.2导入jedis的maven依赖

去maven仓库仓库搜索jedis,复制最新的坐标

image.png

在pom文件中添加依赖,刷新maven


image.png

1.3编码测试

  • 连接数据库
  • 操作命令
  • 断开连接

测试连接(最后输出PONG说明连接成功)
image.png

测试一些简单的基本命令

操作成功,在redis中的所有命令,在Java程序中都可以用jedis点出来。


二 SpringBoot 集成redis

说明:在SpringBoot 2.x之后,原来的Jedis被替换成了lettuce;
jedis : 采用的是直连 , 多个线程操作的话 , 是不安全的 ,如果想要避免不安全的 , 使用jedis pool连接池 ! 更像BIO
lettuce : 采用netty , 实例可以再多个线程中进行共享 , 不存在线程不安全的情况 ! 可以减少线程数量 , 更像NIO模式
BIO NIO详细介绍

2.1新建SpringBoot项目

........................

2.2导入依赖

    
        
            org.springframework.boot
            spring-boot-starter-data-redis
        

2.3添加配置文件

我一般是将配置文件改为yml格式
yml配置.png
spring:
  redis:
    host: 127.0.0.1  
    port: 6379
    database: 1

2.3测试连接

测试成功!!!
redisTemplate.opsForValue() :String字符串类型
redisTemplate.opsForList() List列表类型
redisTemplate.opsForSet() Set集合类型
redisTemplate.opsForZSet() Zet有序集合类型
redisTemplate.opsForHash() Hash哈希类型
他们都可以通过点,直接点出对应的所有命令

\color{red}{ 但是还没有结束。我们现在的操作传输的数据是没有序列化的,我们需要序列化才能正常使用,不出现乱码 }

image.png

2.4自定义RedisTemplate

将此作为一个配置文件添加


@Configuration
public class RedisConfiguration {

    /*
     * 将数据序列化
     * 因为redis支持的数据类型很少
     * */
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        // 将template 泛型设置为 
        RedisTemplate template = new RedisTemplate();
        // 连接工厂,不必修改
        template.setConnectionFactory(redisConnectionFactory);
        /*
         * 序列化设置
         */
        // key、hash的key 采用 String序列化方式
        template.setKeySerializer(RedisSerializer.string());
        template.setHashKeySerializer(RedisSerializer.string());
        // value、hash的value 采用 Jackson 序列化方式
        template.setValueSerializer(RedisSerializer.json());
        template.setHashValueSerializer(RedisSerializer.json());
        template.afterPropertiesSet();

        return template;
    }


}

插入一个错误
添加了redis的配置类(解决序列化问题)后,就开始报这个错(无法自动装配。找不到 'RedisConnectionFactory' 类型的 Bean。 ),然后原本可以正常连接redis数据库的程序就跑不起了。


image.png

报错:redisTemplate无法自动装配


image.png

网上的解决办法:1.更换redis版本,版本不兼容会导致这个问题;
2.添加jedis依赖(不过我感觉这个办法没用,因为在SpringBoot 2.x之后,原来的Jedis被替换成了lettuce)
        
            redis.clients
            jedis
            3.3.0
        

我的解决办法:添加web依赖

        
            org.springframework.boot
            spring-boot-starter-web
        

执行测试

image.png
image.png

你可能感兴趣的:(使用Java连接操作redis(Jedis和SpringBoot整合))