Redis的JAVA客户端

进入redis的官网,Clients | Redis

 选择java语言,可以看到官方推荐的几种客户端;

  1. jedis: 以Redis命令作为方法名称,学习成本低,简单实用,但是Jedis实例是线程不安全的,多线程环境下需要基于连接池来使用。
  2. lettuce: 基于Netty实现,支持同步、异步和响应式编程方式,并且是线程安全的。支持Redis的哨兵模式、集群模式和管道模式。
  3. Redisson: 是一个基于Redis实现的分布式、可伸缩的JAVA数据结构集合,包含了诸如Map、Queue、Lock、Semaphore(信号量)、AtomicLong等强大功能。

1. jedis的使用 jedis

1.引入依赖,具体版本根据相关环境配置


    redis.clients
    jedis
    3.2.0

2.建立连接及测试

@SpringBootTest
public class TestDemo1 {
    @Test
    public void Test01(){
        //建立连接
        Jedis jedis = new Jedis("47.92.192.244",6379);
        //设置密码
        jedis.auth("123456");
        jedis.set("age","18");
        System.out.println(jedis.get("age"));
        //关闭连接
        if(jedis != null){
           jedis.close();
        }
    }
}

 2. SpringDataRedis

SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis                      spring-data-redis

  • 提供了对不同Redis客户端的整合(Lettuce和Jedis)
  • 提供了RedisTemplate统一的API来操作Redis
  • 支持Redis的发布订阅模型
  • 支持Redis哨兵和Redis集群
  • 支持基于Lettuce的响应式编程
  • 支持基于JDK、JSON、字符串、Spring对象的数据序列化与反序列化
  • 支持基于Redis的JDKCollection实现

 1.导入依赖

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

        
            org.apache.commons
            commons-pool2
        

2. 添加配置文件

spring:
  redis:
    port: 6379
    host: 47.92.192.244
    lettuce:
      pool:
        max-active: 8 #最大连接
        max-idle: 8  #最大空闲连接
        min-idle: 0  #最小空闲连接
        max-wait: 100   #连接等待时间

 3. 测试类中测试


@SpringBootTest
//@RunWith(SpringRunner.class)
public class TestDemo1 {
    //注入RedisTemplate
    @Autowired
    private RedisTemplate redisTemplate;
    @Test
    public void Test01(){
        Jedis jedis = new Jedis("47.92.192.244",6379);
        jedis.set("age","18");
        System.out.println(jedis.get("age"));
    }
    @Test
    public void Test02(){
        redisTemplate.opsForValue().set("sex","man");
        Object sex = redisTemplate.opsForValue().get("sex");
        System.out.println(sex);
    }
}

Test02出现了错误,空指针异常,也就是

查找了几种可能引起该问题的原因,并有以下几种解决方法:

1)将@Autowired  改为 @Resource, 降低安全检查等级,此种情况的产生可能是因为注入的是RedisTemplate ;

        因为@Autowired是类型注入,springboot中默认是RedisTemplate,所以会报错。可以改为@Resource注解。

2)单纯的测试是无法注入的.要在测试类上同时加上

@SpringBootTest
@RunWith(SpringRunner.class)

@runWith注解作用:
--@RunWith就是一个运行器
--@RunWith(SpringRunner.class),让测试运行于Spring测试环 境,以便在测试开始的时候自动创建Spring的应用上下文

@RunWith(SpringRunner.class)的作用表明Test测试类要使用注入的类,比如@Autowired注入的类,有了@RunWith(SpringRunner.class)这些类才能实例化到spring容器中,自动注入才能生效

你可能感兴趣的:(深入学习Redis,java,redis,数据库)