设为首页 - 加入收藏  
您的当前位置:首页 >IT科技类资讯 >一篇学会 C# Redis list 当作队列使用 正文

一篇学会 C# Redis list 当作队列使用

来源:亿华互联编辑:IT科技类资讯时间:2025-11-05 15:56:21

本文转载自微信公众号「后端Q」,篇学作者conan  。作队转载本文请联系后端Q公众号。列使

Redis的篇学列表经常被用作队列,用于在不同程序之间有序地交换消息。作队一个客户端通过 LPUSH 命令将消息放入队列中,列使而另一个客户端通过 RPOP 或者 BRPOP 命令取出队列中等待时间最长的篇学消息。

对于c# 方法

using (var redisClent = RedisManager.GetClient())                         {                             while (true)                             {                                 if ((DateTime.Now - date).TotalSeconds > maxSeconds)                                     break;                                 var infoJson = redisClent.DequeueItemFromList(CacheKeys.UploadLoginTimeQueue);                                 if (string.IsNullOrWhiteSpace(infoJson) || string.IsNullOrEmpty(infoJson))                                     break;                                 var info = JsonConvert.DeserializeObject<LoginTimeUpdate>(infoJson);                                 UpdateLoginTime(info);                             }                         }  client = RedisManager.GetClient();                 if (!client.Get<bool>(key))                 {                     client.Set(key,作队 true, DateTime.Now.Date.AddDays(1).AddSeconds(-1));                 }                 var jsonObj = JsonConvert.SerializeObject(info);                 client.EnqueueItemOnList(CacheKeys.UploadLoginTimeQueue, jsonObj); 

命令

redis 127.0.0.1:6379> LPUSH runoobkey redis (integer) 1 redis 127.0.0.1:6379> LPUSH runoobkey mongodb (integer) 2 redis 127.0.0.1:6379> LPUSH runoobkey mysql (integer) 3 redis 127.0.0.1:6379> LRANGE runoobkey 0 10 1) "mysql" 2) "mongodb" 3) "redis" 

问题,上面的列使队列方法是免费信息发布网『不安全』的,因为在这个过程中,篇学一个客户端可能在取出一个消息之后崩溃,作队而未处理完的列使消息也就因此丢失。

使用 RPOPLPUSH 命令(或者它的篇学阻塞版本 BRPOPLPUSH )可以解决这个问题:因为它不仅返回一个消息,同时还将这个消息添加到另一个备份列表当中,作队如果一切正常的列使话,亿华云计算当一个客户端完成某个消息的处理之后,可以用 LREM 命令将这个消息从备份表删除。

最后,还可以添加一个客户端专门用于监视备份表,它自动地将超过一定处理时限的消息重新放入队列中去(负责处理该消息的客户端可能已经崩溃),这样就不会丢失任何消息了。

上一篇:别克换挡电脑维修教程(轻松掌握别克换挡电脑的维修方法)
下一篇:假如是在虚拟机中使用Ubuntu,那么设置之前请先参照我的上一遍文章虚拟机Net方式设置连接外网 中的网络设置部分,先设置好主机的网络,然后配置虚拟机Ubuntu的IP和网关 假如主机操作系统就是Ubuntu,请直接参照下文进行设置 内容如下: 1. 检验是否可以连通,就使用ping命令ping 网关 永久修改Ubuntu LINUX IP 一、使用命令设置ubuntu的ip地址 并用下面的行来替换有关eth0的行: # The primary network interface - use DHCP to find our address auto eth0 iface eth0 inet dhcp 用下面的命令使网络设置生效: sudo /etc/init.d/networking restart 也可以在命令行下直接输入下面的命令来获取地址 sudo dhclient eth0 /etc/network/interfaces: sudo vi /etc/network/interfaces 并用下面的行来替换有关eth0的行: # The primary network interface auto eth0 iface eth0 inet static address 203.171.239.155 gateway 203.171.239.129 netmask 255.255.255.224 #network 203.171.239.128 #broadcast 192.168.3.159 将上面的ip地址等信息换成你自己就可以了.用下面的命令使网络设置生效: sudo /etc/init.d/networking restart /etc/network/interfaces: sudo vi /etc/network/interfaces 在该文件中添加如下的行: auto eth0:1 iface eth0:1 inet static address 192.168.1.155 netmask 255.255.255.0 work x.x.x.x broadcast x.x.x.x gateway x.x.x.x 根据你的情况填上所有诸如address,netmask,network,broadcast和gateways等信息. 用下面的命令使网络设置生效: sudo /etc/init.d/networking restart PS:根据上文方式,在虚拟机Vmware中安装Ubuntu,虚拟机网络连接方式为Net,设置静态IP连接网络,我已经测试通过,直接修改resolv.con和interfaces的方式可以保证开机后设置的IP依然存在。 设置后不能连接网络,欢迎留言,共同讨论,呵呵!

相关推荐:

0.1552s , 11670.359375 kb

Copyright © 2025 Powered by 一篇学会 C# Redis list 当作队列使用,亿华互联  滇ICP备2023000592号-16

sitemap

Top