当前位置: 首页 > news >正文

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 类中添加列表相关的方法。

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 中添加处理列表操作的端点。

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相关操作,还是要结合具体的业务选择具体的存储类型,这样对于项目后期的迭代具有事半功倍的效果。所以项目前期的技术选型也很重要,不容忽视。
可以关注我一起学习!一起为程序员职业生涯蓄能!


http://www.mrgr.cn/news/4406.html

相关文章:

  • 安科瑞光储充一体化管理系统在直流快速充电站中的解决方案
  • JavaScript 手写仿filter
  • SQL每日一练-0821
  • 提交代码时解决冲突之思路
  • Cookie和Session是什么?它们的区别是什么?
  • 海山数据库(He3DB)+AI:(一)神经网络基础
  • 苍穹外卖之菜品管理
  • java枚举
  • 推荐一款低成本 小尺寸数字脉冲编码调制(PCM)输入D类功率放大器 MAX98357AETE+T 兼具AB类性能
  • 程序员如何平衡日常编码工作与提升式学习?
  • R中6种读入表格数据的方式哪个最快?结果出人意料!
  • 2408gui,分层窗口1
  • Android studio制作一个高仿计算器小demo
  • 2024年游泳耳机哪个牌子好?四大热门游泳耳机多维测评盘点!
  • 2024年最新版JavaScript学习笔记【3万字总结】(更新中...)
  • 2024年特种设备作业人员考试题库及答案(流动式起重机Q2)
  • 设计模式-创建型模式-原型模式
  • 制造业如何选择适合的工厂ERP系统?17款ERP系统推荐!
  • centos 虚拟机器刚刚安装没有ip地址的问题
  • 【数据结构算法经典题目刨析(c语言)】使用数组实现循环队列(图文详解)