Java中Redis的相关操作

使用步骤:

step1:导入Spring Data Redis 的maven坐标

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

step2:配置Redis的数据源

spring:
  redis:
    port: 6379
    host: localhost
    database: 2

step3:编写配置类,创建RedisTemplate对象(配置类管理第三方bean)

/**
 * 简介说明:Redis的配置类,用于配置RedisTemplate
 *
 * @author: 小鸥
 * @date: 2025/05/08 17:54:55
 * @version: 1.0
 */
@Configuration
@Slf4j
public class RedisConfiguration {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("初始化RedisTemplate...");
        RedisTemplate redisTemplate = new RedisTemplate();

        //设置key的序列化器 默认是JdkSerializationRedisSerializer
        redisTemplate.setKeySerializer(new StringRedisSerializer());

        //设置工厂,通过redis的工厂创建对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        return redisTemplate;
    }
}

step4:测试类,通过RedisTemplate对象来操作Redis的五种常用数据类型

/**
 * 简介说明:
 *
 * @author: 小鸥
 * @date: 2025/04/16 14:31:01
 * @version: 1.0
 */
@SpringBootTest
public class SpringDataRedisTest {
    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    public void testRedisTemplate(){
        System.out.println(redisTemplate);

        //操作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();

    }

    //操作string类型
    @Test
    public void testRedis_string(){
        ValueOperations redis_string = redisTemplate.opsForValue();
        redis_string.set("name","小鸥");
        redis_string.set("age","18");
        String string =(String) redis_string.get("name");
        System.out.println(string);

        redis_string.set("code","123456",3, TimeUnit.MICROSECONDS);
        redis_string.setIfAbsent("lock","1");
        redis_string.setIfAbsent("lock","2");
    }

    //操作hash类型
    @Test
    public void testRedis_hash(){
        HashOperations redis_hash = redisTemplate.opsForHash();
        redis_hash.put("user","name","小明");
        redis_hash.put("user","age","22");

        String name = (String) redis_hash.get("user", "name");
        System.out.println(name);//小明

        //获取所有的key
        Set user = redis_hash.keys("user");
        System.out.println(user);//[name, age]

        //获取所有的value
        List values = redis_hash.values("user");
        System.out.println(values);//[小明, 22]

        redis_hash.delete("user","age");
    }

    //操作列表类型的数据
    @Test
    public void testRedis_list(){
        ListOperations redis_list = redisTemplate.opsForList();
        redis_list.leftPushAll("mylist","a","b","c");
        redis_list.leftPush("mylist","d");

        List range = redis_list.range("mylist", 0, -1);
        System.out.println(range);//[d, c, b, a]

        redis_list.rightPop("mylist");

        Long size = redis_list.size("mylist");
        System.out.println(size);//3
    }

    //操作集合类型的数据
    @Test
    public void testRedis_set(){
        SetOperations redis_set = redisTemplate.opsForSet();

        redis_set.add("set1","a","b","c","d");
        redis_set.add("set2","a","b","x","f");

        Set members = redis_set.members("set1");
        System.out.println(members);//[a, b, c, d]

        Long size = redis_set.size("set1");
        System.out.println(size);//4

        Set intersect = redis_set.intersect("set1", "set2");
        System.out.println(intersect);//[a, b]

        Set union = redis_set.union("set1", "set2");
        System.out.println(union);//[a, b, c, d, x, f]

        redis_set.remove("set1","a","b");

    }

    //操作有序集合类型的数据
    @Test
    public void testRedis_zset(){
        ZSetOperations redis_zset = redisTemplate.opsForZSet();

        redis_zset.add("zset1","a",10);
        redis_zset.add("zset1","b",12);
        redis_zset.add("zset1","c",9);

        Set zset = redis_zset.range("zset1", 0, -1);
        System.out.println(zset);//[c, a, b]

        redis_zset.incrementScore("zset1","c",20);

        redis_zset.remove("zset1","a","b");
    }

    //操作通用类型的数据
    @Test
    public void testRedis_common(){
        Set keys = redisTemplate.keys("*");
        System.out.println(keys);//[user, name, set1, zset1, mylist, lock, set2, age]

        Boolean name = redisTemplate.hasKey("name");
        Boolean set1 = redisTemplate.hasKey("set1");
        System.out.println(name);//true
        System.out.println(set1);//true


        for (Object key :keys) {
            DataType type = redisTemplate.type(key);
            System.out.println(type);
        }

        redisTemplate.delete("mylist");

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值