Java 中操作 Redis

一、Redis 常用数据类型

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

二、Redis 常用操作命令

1. 字符串命令

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

2. 哈希命令

在这里插入图片描述

哈希特别适合存储对象!

在这里插入图片描述
在这里插入图片描述

3. 列表命令

在这里插入图片描述

取出跟存入的顺序一致!

在这里插入图片描述

4. 集合命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 有序集合命令

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

6. 通用命令

在这里插入图片描述

三、在 Java 中操作 Redis

1. 导入 maven 坐标

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

2. 配置 Redis 数据源

在这里插入图片描述

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");
    }
}

おすすめ

転載: blog.csdn.net/m0_52861684/article/details/132315700