SpringBoot依赖之Spring Data Redis 一 List 类型

概念

Spring Data Redis (Access+Driver)
  • 依赖名称: Spring Data Redis (Access+Driver)
  • 功能描述: Advanced and thread-safe Java Redis client for synchronous, asynchronous, and reactive usage. Supports Cluster, Sentinel, Pipelining, Auto-Reconnect, Codecs and much more.
  • 中文释义:用于同步、异步和反应式使用的高级且线程安全的 Java Redis 客户端。支持集群、哨兵、管道、自动重新连接、编解码器等。

项目学习代码地址

操作演示:

在IDEA中创建项目过程可以参考上一篇:
SpringBoot依赖之Spring Data Redis 一 String类型

Spring Boot 项目中使用 Spring Data Redis 实现列表list

接下来我们演示在 Spring Boot 项目中使用 Spring Data Redis 实现列表(List)操作,我们可以在之前的项目代码基础上扩展 Redis 服务类和控制器类,以支持对 Redis 列表的常见操作。以下是具体的实现步骤。

1. 更新 Redis 服务类

RedisService 类中添加列表相关的方法。

java 复制代码
package com.dependencies.springdataredis;

import org.springframework.data.redis.core.*;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class RedisService {

    private final RedisTemplate<String, Object> redisTemplate;
    private final ListOperations<String, Object> listOperations;

    public RedisService(RedisTemplate<String, Object> redisTemplate) {
        this.redisTemplate = redisTemplate;
        this.listOperations = redisTemplate.opsForList();
    }

    // 向列表左侧推入值
    public void pushToListLeft(String key, String value) {
        listOperations.leftPush(key, value);
    }

    // 向列表右侧推入值
    public void pushToListRight(String key, String value) {
        listOperations.rightPush(key, value);
    }

    // 从列表左侧弹出值
    public String popFromListLeft(String key) {
        return (String) listOperations.leftPop(key);
    }

    // 从列表右侧弹出值
    public String popFromListRight(String key) {
        return (String) listOperations.rightPop(key);
    }

    // 获取列表中所有值
    public List<Object> getList(String key) {
        return listOperations.range(key, 0, -1);
    }
}

2. 更新控制器类

RedisController 中添加处理列表操作的端点。

java 复制代码
package com.dependencies.springdataredis;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author zhizhou   2024/8/17 12:02
 */
@RestController
public class RedisController {

    private final RedisService redisService;

    public RedisController(RedisService redisService) {
        this.redisService = redisService;
    }

    // 向列表左侧推入值
    @GetMapping("/list/leftpush")
    public String leftPushToList(@RequestParam String key, @RequestParam String value) {
        redisService.pushToListLeft(key, value);
        return "值被推到列表的左侧";
    }

    // 向列表右侧推入值
    @GetMapping("/list/rightpush")
    public String rightPushToList(@RequestParam String key, @RequestParam String value) {
        redisService.pushToListRight(key, value);
      	return "值被推到列表的右侧";
    }

    // 从列表左侧弹出值
    @GetMapping("/list/leftpop")
    public String leftPopFromList(@RequestParam String key) {
        return redisService.popFromListLeft(key);
    }

    // 从列表右侧弹出值
    @GetMapping("/list/rightpop")
    public String rightPopFromList(@RequestParam String key) {
        return redisService.popFromListRight(key);
    }

    // 获取列表中所有值
    @GetMapping("/list/getall")
    public List<Object> getAllFromList(@RequestParam String key) {
        return redisService.getList(key);
    }
}

3. 验证测试list相关操作

我们启动项目以后,就通过以下的额 URL 测试 Redis 列表的功能:

  • 向列表左侧PUSH推入值 : http://localhost:8080/list/leftpush?key=oneList&value=value1

    • 这会将 value1 推入到列表 myList 的左侧。
  • 向列表右侧PUSH推入值 : http://localhost:8080/list/rightpush?key=oneList&value=value2

    • 这会将 value2 推入到列表 myList 的右侧。
  • 从列表左侧POP弹出值 : http://localhost:8080/list/leftpop?key=oneList

    • 这会从列表 myList 的左侧弹出一个值。
  • 从列表右侧POP弹出值 : http://localhost:8080/list/rightpop?key=oneList

    • 这会从列表 myList 的右侧弹出一个值。
  • 获取列表中所有值 : http://localhost:8080/list/getall?key=oneList

    • 这会获取列表 myList 中的所有值。

4. 总结

​ 通过上述步骤,我们成功在 Spring Boot 项目中使用 Spring Data Redis 实现了对 Redis 列表类型的操作。您可以使用这些方法来处理复杂的队列、栈或其他基于列表的数据结构需求。

​ 这是基本的list相关操作,还是要结合具体的业务选择具体的存储类型,这样对于项目后期的迭代具有事半功倍的效果。所以项目前期的技术选型也很重要,不容忽视。

可以关注我一起学习!一起为程序员职业生涯蓄能!

相关推荐
憧憬成为java架构高手的小白9 分钟前
苍穹外卖项目-day02
java·spring
一只大袋鼠12 分钟前
SpringBoot 入门学习笔记(三)Web 开发下篇
spring boot·笔记·学习
西凉的悲伤18 分钟前
SpringBoot RestTemplate 介绍
java·spring boot·后端·resttemplate
IT_Octopus9 小时前
Spring Boot 实战:@PostConstruct + Caffeine 缓存初始化与定时刷新
spring boot·后端·缓存
yangshicong9 小时前
第11章:结构化输出与数据提取 —— 让 AI 直接返回你想要的数据格式
数据库·人工智能·redis·python·langchain·ai编程
Java面试题总结10 小时前
java高频面试题(2026最新)
java·开发语言·jvm·数据库·spring·缓存
一路向北·重庆分伦10 小时前
09:Redis-高级特性与原理
redis
牧羊狼的狼11 小时前
浅谈电商下单微服务流程
spring·spring cloud·微服务
西安邮电大学12 小时前
SpringBean完整生命周期
java·spring
范什么特西12 小时前
Spring 动态代理 静态代理
java·后端·spring