Java 中操作 Redis

文章目录

    • 一、Redis 常用数据类型
    • 二、Redis 常用操作命令
      • 1. 字符串命令
      • 2. 哈希命令
      • 3. 列表命令
      • 4. 集合命令
      • 5. 有序集合命令
      • 6. 通用命令
    • 三、在 Java 中操作 Redis
      • 1. 导入 maven 坐标
      • 2. 配置 Redis 数据源
      • 3. 编写配置类
    • 四、在代码中的具体使用

一、Redis 常用数据类型

Redis 存储的是键值对结构的数据,其中 key 是字符串类型,value 有5种常用的数据类型:字符串 string、哈希 hash、列表 list、集合 set 以及有序集合 sorted set / zset。

二、Redis 常用操作命令

1. 字符串命令

Java 中操作 Redis_第1张图片

① 设置 key 的过期时间:短信验证码一分钟后自动过期;
② key 不存在时设置 key 的值:分布式锁。

Java 中操作 Redis_第2张图片

Java 中操作 Redis_第3张图片

2. 哈希命令

Java 中操作 Redis_第4张图片

哈希特别适合存储对象!

Java 中操作 Redis_第5张图片
Java 中操作 Redis_第6张图片

3. 列表命令

Java 中操作 Redis_第7张图片

取出跟存入的顺序一致!

Java 中操作 Redis_第8张图片

4. 集合命令

Java 中操作 Redis_第9张图片
Java 中操作 Redis_第10张图片
Java 中操作 Redis_第11张图片
Java 中操作 Redis_第12张图片

5. 有序集合命令

Java 中操作 Redis_第13张图片

Redis 有序集合是 string 类型元素的集合,且不允许有重复成员,每个元素都会关联一个 double 类型的分数,通过这个分数对集合进行排序!

Java 中操作 Redis_第14张图片
Java 中操作 Redis_第15张图片

6. 通用命令

Java 中操作 Redis_第16张图片

三、在 Java 中操作 Redis

1. 导入 maven 坐标

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-data-redisartifactId>
dependency>

2. 配置 Redis 数据源

Java 中操作 Redis_第17张图片

3. 编写配置类


import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
@Slf4j
public class RedisConfiguration {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        log.info("开始创建redis模板对象...");
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置redis的连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }

}

四、在代码中的具体使用


import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.DataType;
import org.springframework.data.redis.core.*;

import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;

@SpringBootTest
public class SpringDataRedisTest {
    @Autowired
    private RedisTemplate redisTemplate;


    /**
     * 通过valueOperations对象就可以操作字符串类型的数据
     */
    @Test
    public void testRedisTemplate1() {

        ValueOperations valueOperations = redisTemplate.opsForValue();
        //插入数据
        valueOperations.set("name", "栈老师不回家");
        //读取数据
        String name = (String) valueOperations.get("name");
        //设置数据一分钟后过期,自动被清理,这里与redis原命令不同
        valueOperations.set("code", "1234", 1, TimeUnit.MINUTES);
        //只有当key不存在时设置其value值,这里也与redis命令不同
        valueOperations.setIfAbsent("lock", "1");

    }


    /**
     * 操作哈希类型
     */
    @Test
    public void testRedisTemplate2() {

        HashOperations hashOperations = redisTemplate.opsForHash();
        //插入数据
        hashOperations.put("001", "age", "20");
        //读取数据
        String age = (String) hashOperations.get("001", "age");
        //获得所有的key
        Set keys = hashOperations.keys("001");
        //获得所有的value
        List values = hashOperations.values("001");
        //删除一条数据
//        hashOperations.delete("001", "age");

    }


    /**
     * 通用命令操作
     */
    @Test
    public void testRedisTemplate3() {

        //查找所有的key
        Set keys = redisTemplate.keys("*");
        //检查给定key是否存在
        Boolean name = redisTemplate.hasKey("name");
        //返回key所存储值的数据类型
        DataType type = redisTemplate.type("name");
        //删除key
//        redisTemplate.delete("name");
    }
}

你可能感兴趣的:(Java,EE,企业级应用开发,java,redis,开发语言)