Redis实战--SpringBoot中对Redis数据类型list的基本操作示例

简介: Redis实战--SpringBoot中对Redis数据类型list的基本操作示例
该文章是接上一篇文章《Redis整合SpringBoot示例》的后续,操作用例代码比较多,这里展示核心代码所占篇幅很多,所以单独抽出来写

list类型在SpringBoot中的使用代码如下

package com.example.echo.redis;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;

/**
 * @author XLecho
 * Date 2019/11/9 0009
 * Time 11:12
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTypeListUseTest {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    /**
     * 创建一个队列,并从队列的左边插入数据a
     */
    @Test
    public void testLpushList() {
        redisTemplate.opsForList().leftPush("queue", "a");
        System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
    }

    /**
     * 从队列的左边插入数据b c
     */
    @Test
    public void testLpushAllList() {
        redisTemplate.opsForList().leftPushAll("queue", "b", "c");
        System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
    }

    /**
     * 从队列的右边插入数据d e
     */
    @Test
    public void testRpushAllList() {
        redisTemplate.opsForList().rightPushAll("queue", "d", "e");
        System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
    }

    /**
     * 从队列的左边弹出一个元素
     */
    @Test
    public void testLpopList() {
        redisTemplate.opsForList().leftPop("queue");
        System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
    }

    /**
     * 从队列的左边弹出一个元素
     */
    @Test
    public void testRpopList() {
        redisTemplate.opsForList().leftPop("queue");
        System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
    }

    /**
     * 获取队列指定索引的元素
     */
    @Test
    public void testLindexList() {
        String queue = redisTemplate.opsForList().index("queue", 2);
        System.out.println(queue);
        System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
    }

    /**
     * 截取队列指定索引范围内的值
     * 注意:没有被截取就会被舍弃
     */
    @Test
    public void testLtrimList() {
        redisTemplate.opsForList().trim("queue", 0, 1);
        System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
    }

    /**
     * 查看队列的长度
     */
    @Test
    public void testLlenList() {
        System.out.println(redisTemplate.opsForList().size("queue"));
    }

    /**
     * 删除队列
     */
    @Test
    public void testDelList() {
        redisTemplate.delete("queue");
        System.out.println(redisTemplate.opsForList().range("queue", 0, -1));
    }

    /**
     * 使用Brpop实现发布订阅
     */
    @Test
    public void testBrpopList() {
        redisTemplate.opsForList().leftPushAll("queue", "a", "b", "c", "d", "e");
        IntStream.range(0, 6).forEach(it -> {
            System.out.println(redisTemplate.opsForList().rightPop("queue", 60, TimeUnit.SECONDS));
        });
    }

}
目录
相关文章
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1544 3
|
10月前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
1457 2
Spring Boot 3.x 微服务架构实战指南
|
10月前
|
NoSQL Java 网络安全
SpringBoot启动时连接Redis报错:ERR This instance has cluster support disabled - 如何解决?
通过以上步骤一般可以解决由于配置不匹配造成的连接错误。在调试问题时,一定要确保服务端和客户端的Redis配置保持同步一致。这能够确保SpringBoot应用顺利连接到正确配置的Redis服务,无论是单机模式还是集群模式。
759 5
|
11月前
|
消息中间件 Ubuntu Java
SpringBoot整合MQTT实战:基于EMQX实现双向设备通信
本教程指导在Ubuntu上部署EMQX 5.9.0并集成Spring Boot实现MQTT双向通信,涵盖服务器搭建、客户端配置及生产实践,助您快速构建企业级物联网消息系统。
3147 1
|
11月前
|
NoSQL Java 调度
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
分布式锁是分布式系统中用于同步多节点访问共享资源的机制,防止并发操作带来的冲突。本文介绍了基于Spring Boot和Redis实现分布式锁的技术方案,涵盖锁的获取与释放、Redis配置、服务调度及多实例运行等内容,通过Docker Compose搭建环境,验证了锁的有效性与互斥特性。
915 0
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
|
11月前
|
存储 消息中间件 NoSQL
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
本文将系统探讨 Redis List 的核心特性、完整命令体系、底层存储实现以及典型实践场景,为读者构建从理论到应用的完整认知框架,助力开发者在实际业务中高效运用这一数据结构解决问题。
|
存储 NoSQL 定位技术
Redis数据类型面试给分情况
Redis常见数据类型包括:string、hash、list、set、zset(有序集合)。此外还包含高级结构如bitmap、hyperloglog、geo。不同场景可选用合适类型,如库存用string,对象存hash,列表用list,去重场景用set,排行用zset,签到用bitmap,统计访问量用hyperloglog,地理位置用geo。
668 5
|
NoSQL Java Redis
Redis基本数据类型及Spring Data Redis应用
Redis 是开源高性能键值对数据库,支持 String、Hash、List、Set、Sorted Set 等数据结构,适用于缓存、消息队列、排行榜等场景。具备高性能、原子操作及丰富功能,是分布式系统核心组件。
878 2
|
监控 Java 调度
SpringBoot中@Scheduled和Quartz的区别是什么?分布式定时任务框架选型实战
本文对比分析了SpringBoot中的`@Scheduled`与Quartz定时任务框架。`@Scheduled`轻量易用,适合单机简单场景,但存在多实例重复执行、无持久化等缺陷;Quartz功能强大,支持分布式调度、任务持久化、动态调整和失败重试,适用于复杂企业级需求。文章通过特性对比、代码示例及常见问题解答,帮助开发者理解两者差异,合理选择方案。记住口诀:单机简单用注解,多节点上Quartz;若是任务要可靠,持久化配置不能少。
1202 4
|
机器学习/深度学习 数据采集 人机交互
springboot+redis互联网医院智能导诊系统源码,基于医疗大模型、知识图谱、人机交互方式实现
智能导诊系统基于医疗大模型、知识图谱与人机交互技术,解决患者“知症不知病”“挂错号”等问题。通过多模态交互(语音、文字、图片等)收集病情信息,结合医学知识图谱和深度推理,实现精准的科室推荐和分级诊疗引导。系统支持基于规则模板和数据模型两种开发原理:前者依赖人工设定症状-科室规则,后者通过机器学习或深度学习分析问诊数据。其特点包括快速病情收集、智能病症关联推理、最佳就医推荐、分级导流以及与院内平台联动,提升患者就诊效率和服务体验。技术架构采用 SpringBoot+Redis+MyBatis Plus+MySQL+RocketMQ,确保高效稳定运行。
981 0