Spring Data Redis的基本使用

114 阅读2分钟

1.Redis的Java客户端

Redis的Java客户端有很多,常用的有以下几种:

  • Jedis:是Redis官方推荐的Java连接开发工具,只是将Redis的所有命令封装成了Java可直接调用的方法
  • Lettuce:是 Redis 的一款高级 Java 客户端,目前已成为 SpringBoot 2.0 版本默认的 redis 客户端
  • Spring Data Redis:是Spring的一部分,对Redis底层开发包(如Jedis、Lettuce)进行了高度封装,在Spring项目中,可使用Spring Data Redis来简化操作

Spring Data Redis与spring的整合,更像mybatis与spring整合,通过工厂,创建实例,再操作实例。而Jedis,更像spring与MySQL结合,通过操作连接池,获取实例操作数据库

2.Spring Data Redis的使用方式

操作步骤

  • 导入Spring Data Redis的maven坐标
  • 配置Redis数据源
  • 编写配置类,创建RedisTemplate对象
  • 通过RedisTemplate对象操作Redis

2.1 导入maven坐标

在项目pom.xml文件中导入maven坐标:

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

2.2 配置Redis数据源

在项目application.yml中配置数据源:

spring:
  redis:
    host:localhost
    port:6379
    password:qing
    database:0

2.3 编写配置类,创建RedisTemplate对象

在项目config文件夹下创建RedisConfiguration.java:

@Configuration
@Slf4j
public class RedisConfiguration {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置redis的连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}

2.4 通过RedisTemplate对象操作Redis

通过RedisTemplate对象创建常用redis类型:

@SpringBootTest
public class SpringDataRedisTest {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testRedisTemplate(){
        //操作String
        ValueOperations valueOperations = redisTemplate.opsForValue();
        //操作hash
        HashOperations hashOperations = redisTemplate.opsForHash();
        //操作list
        ListOperations listOperations = redisTemplate.opsForList();
        //操作set
        SetOperations setOperations = redisTemplate.opsForSet();
        //操作zset
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    }
}

通过RedisTemlpate对象操作Redis String类型:

    @Test
    public void testString(){
        //set
        redisTemplate.opsForValue().set("city","北京");
        //get
        String city = (String) redisTemplate.opsForValue().get("city");
        //setex
        redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);
        //setnx
        redisTemplate.opsForValue().setIfAbsent("lock","1");
    }

通过RedisTemlpate对象操作Redis Hash类型:

    @Test
    public void testHash(){
        HashOperations hashOperations = redisTemplate.opsForHash();
        //hset
        hashOperations.put("100","name","qing");
        hashOperations.put("100","age","23");
        //hget
        String name = (String)hashOperations.get("100","name");
        System.out.println(name);
        //hkeys
        Set keys = hashOperations.keys("100");
        System.out.println(keys);
        //hvals
        List values = hashOperations.values("100");
        //hdel
        hashOperations.delete("100","age");
    }

其余Redis数据类型操作与之类似,这里不再复述