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

C# 使用 CSRedis 来操作 Redis 队列

Demo代码

public class HomeController : Controller
{
    [HttpGet("index")]
    public async Task Index()
    {
        var csredis = new CSRedis.CSRedisClient("127.0.0.1:6379,password=,defaultDatabase=1");
        RedisHelper.Initialization(csredis);

        var queueKey = "queue_task_test"; // 定义队列的 key

        //在列表中添加一个或多个值
        RedisHelper.RPush("queue_task_test", new { id = 1, name = "no.1" });
        RedisHelper.RPush("queue_task_test", new { id = 2, name = "no.2" });
        RedisHelper.RPush("queue_task_test", new { id = 3, name = "no.3" });
        RedisHelper.RPush("queue_task_test", new { id = 4, name = "no.4" });
        RedisHelper.RPush("queue_task_test", new { id = 5, name = "no.5" });

        //移出并获取列表的第一个元素
        Console.WriteLine(RedisHelper.LPop("queue_task_test"));
        Console.WriteLine(RedisHelper.LPop("queue_task_test"));
        Console.WriteLine(RedisHelper.LPop("queue_task_test"));
        Console.WriteLine(RedisHelper.LPop("queue_task_test"));
        Console.WriteLine(RedisHelper.LPop("queue_task_test"));
    }
}

分析

在 Redis 中,RPushLPop 分别是用于操作列表(List)数据结构的命令。

RPush(Right Push)

RPush 用于将一个或多个元素添加到列表的右端。也就是将元素插入到列表的末尾。你可以向一个 Redis 列表中推送多个元素,Redis 会将它们按顺序依次添加到列表的末尾。

在代码中,RedisHelper.RPush("queue_task_test", new { id = 1, name = "no.1" }) 这行代码将一个新的对象 { id = 1, name = "no.1" } 添加到 queue_task_test 列表的末尾。

LPop(Left Pop)

LPop 用于从列表的左端(即列表的头部)移除并返回第一个元素。当你调用 LPop 时,Redis 会移除列表的第一个元素并返回该元素的值。调用 LPop 会导致列表的大小减小,并且元素顺序会发生变化。

在代码中,Console.WriteLine(RedisHelper.LPop("queue_task_test")) 会从 queue_task_test 列表的左端(头部)移除第一个元素并打印出来。每次调用 LPop,都会移除列表中的第一个元素,直到列表为空。

总结

  • RPush 向列表的右端添加元素。
  • LPop 从列表的左端移除并返回第一个元素。

因此,代码的执行顺序会将元素按照添加的顺序从右端插入,而通过 LPop 移除时,会按添加顺序的相反顺序(先入先出,FIFO)进行移除。

知识点

FIFO(First In, First Out) 是一种数据结构的访问方式,意思是 先入先出。这意味着最早进入数据结构的元素会最先被处理或移除。

相关文章:

  • ART光学跟踪系统在汽车制造与设计审核中的实际应用
  • 使用IDEA创建Maven项目、Maven坐标,以及导入Maven项目
  • Java的反射
  • 深度解析Unity3D渲染管线:网格、材质与GPU渲染的协同逻辑
  • Spring Boot 中自动装配机制的原理
  • golang floate64保留2位小数
  • 力扣 买卖股票的最佳时机
  • ANR小记
  • 记录一次部署PC端网址全过程
  • 电商物流系统方案详解
  • AI改文(小说推文Java版)
  • 【干货分享】Autosar CanIf 模块的应用干货笔记1
  • 智能硬件新时代,EasyRTC开启物联音视频新纪元
  • softgym安装
  • ✨2.快速了解HTML5的标签类型
  • Windows系统安装GPU驱动
  • AutoDock CrankPep or ADCP进行蛋白质多肽对接
  • 网络安全重点总结
  • 智慧校园综合管理平台解决方案
  • Linux配置SSH公钥认证与Jenkins远程登录进行自动发布
  • 东方红资管官宣:41岁原国信资管董事长成飞出任新总经理
  • 国家主席习近平同普京总统签署关于进一步深化中俄新时代全面战略协作伙伴关系的联合声明
  • 商务部:中方愿同各国一道加强合作,促进跨境电商健康可持续发展
  • 国防部:奉劝有关国家不要引狼入室,甘当棋子
  • 华为招聘:未与任何第三方开展过任何形式的实习合作
  • 民生访谈|摆摊设点、公园搭帐篷、行道树飘絮,管理难题怎么解?