Redis 列表(List)

命令 描述 语法
LPUSH 将一个或多个值插入到列表头部(左侧) LPUSH key value1 [value2 ...]
RPUSH 将一个或多个值插入到列表尾部(右侧) RPUSH key value1 [value2 ...]
LPOP 移除并返回列表的第一个元素(左侧) LPOP key
RPOP 移除并返回列表的最后一个元素(右侧) RPOP key
LRANGE 获取列表指定范围内的元素 LRANGE key start stop
- start:起始索引(包含),0 表示列表的第一个元素, -1 表示列表的最后一个元素。
- stop:结束索引(包含)。
LLEN 获取列表的长度 LLEN key
LINDEX 通过索引获取列表中的元素 LINDEX key index
- index:元素的索引,0 表示列表的第一个元素, -1 表示列表的最后一个元素。
LSET 设置列表中指定索引位置的元素值 LSET key index value
- index:元素的索引,0 表示列表的第一个元素, -1 表示列表的最后一个元素。
LREM 从列表中删除指定数量的指定元素 LREM key count value
- count
  > 0:从列表头部开始向列表尾部搜索,删除 count 个值为 value 的元素。
  < 0:从列表尾部开始向列表头部搜索,删除 count 绝对值个值为 value 的元素。
  = 0:删除列表中所有值为 value 的元素。
RPOPLPUSH 移除列表的最后一个元素(右侧),并将其添加到另一个列表的头部(左侧) RPOPLPUSH source destination

场景示例

  1. 消息队列 假设我们要构建一个简单的消息队列,生产者向队列中发送消息,消费者从队列中获取消息。

生产者(Java 代码示例)

import redis.clients.jedis.Jedis;

public class Producer {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String queueKey = "message:queue";
        String message = "这是一条新消息";

        // 从右侧插入消息到队列
        jedis.rpush(queueKey, message);
        System.out.println("发送消息: " + message);

        jedis.close();
    }
}

消费者(Java 代码示例)

import redis.clients.jedis.Jedis;

public class Consumer {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String queueKey = "message:queue";

        // 从左侧弹出消息
        String message = jedis.lpop(queueKey);
        if (message != null) {
            System.out.println("接收消息: " + message);
        } else {
            System.out.println("队列中无消息");
        }

        jedis.close();
    }
}
  1. 任务队列 假设有一个任务分发系统,将任务添加到任务队列中,工作节点从队列中获取任务并执行。

任务添加(Java 代码示例)

import redis.clients.jedis.Jedis;

public class TaskAdder {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String taskQueueKey = "task:queue";
        String task = "处理用户注册请求";

        // 从左侧插入任务到队列
        jedis.lpush(taskQueueKey, task);
        System.out.println("添加任务: " + task);

        jedis.close();
    }
}

工作节点获取任务(Java 代码示例)

import redis.clients.jedis.Jedis;

public class Worker {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String taskQueueKey = "task:queue";

        // 从右侧弹出任务
        String task = jedis.rpop(taskQueueKey);
        if (task != null) {
            System.out.println("获取到任务: " + task);
            // 模拟任务执行
            System.out.println("执行任务: " + task);
        } else {
            System.out.println("任务队列为空");
        }

        jedis.close();
    }
}
  1. 最新消息列表 假设我们要展示网站的最新 10 条新闻,每次有新新闻发布时,将新闻添加到列表中,并展示最新的 10 条。

添加新闻(Java 代码示例)

import redis.clients.jedis.Jedis;

public class NewsAdder {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String newsListKey = "news:list";
        String newNews = "最新科技新闻:人工智能取得重大突破";

        // 从左侧插入新闻到列表
        jedis.lpush(newsListKey, newNews);

        // 只保留最新的 10 条新闻
        long listLength = jedis.llen(newsListKey);
        if (listLength > 10) {
            jedis.ltrim(newsListKey, 0, 9);
        }

        jedis.close();
    }
}

展示最新新闻(Java 代码示例)

import redis.clients.jedis.Jedis;
import java.util.List;

public class NewsDisplayer {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("localhost");
        String newsListKey = "news:list";

        // 获取最新的 10 条新闻
        List<String> latestNews = jedis.lrange(newsListKey, 0, 9);
        for (String news : latestNews) {
            System.out.println(news);
        }

        jedis.close();
    }
}
#我的2024牛客高光时刻##牛客创作赏金赛#
全部评论

相关推荐

09-13 08:41
服装/纺织设计
那一天的Java_J...:你第一次参加面试吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务