这篇文章主要为大家详细介绍了再说一遍实现简单队列的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在工作中,时常会有用到队列的场景,比较常见的用拉比特这些专业的组件,官网地址是:http://www。rabbitmq。com,重要的是官方有。净得很的客户端,但是如果对拉比特不熟悉的话,建议使用第三方封装好的easynetq,rabbitmq。简单的网络智商,兔子。简单的网络智商,兔子。简单的网络智商,兔子比较适合对安全性,稳定性要求较高的地方,但有时我们也会有对这方面要求不是很高的场景,比如:文章阅读数,实时性要求不是很高的地方,所以我想到了用再说一遍来做队列。
再说一遍的列表(列表)结构本身就是一个链表(双向链表),所以符合我们的队列先进先出的要求。
我用的是堆叠交换(堆栈交换)。再说一遍这个组件来操作瑞迪斯,以前一直用服务部门堆栈。先生,redis先生,后来该类库升级后对个人使用有次数限制,需要付费使用才能没有调用限制。
操作再说一遍简单封装如下:
公共静态类修复
{
公共静态int I=0;
专用静态字符串重新连接循环=配置管理器.AppSettings['重新连接环。tostring();
专用静态惰性连接多路复用器lazyConnection=新建惰性连接多路复用器(())
{
(i);
返回连接多路复用器连接(重新连接环):
});
公共静态连接多路复用器实例
{
得到它
{
返回惰性连接.价值;
}
}
}
有了这个操作类后,我们就可以操作再说一遍了,简单的对列表(列表)的操作如下:
///摘要
///简单再说一遍队列
///摘要
公共类简单再版
{
public see leftpush(字符串键,字符串值)
{
var redis=redishelper .实例。GetDatabase():
再说一遍ListLeftPush(key,value):
}
公共字符串右键弹出
{
var redis=redishelper .实例。GetDatabase():
返回里兹ListRightPop(关键点):
}
}
测试代码如下:
首先需要一个生产数据的程序
静态空干管(字符串[]参数)
{
系统。执行绪。任务。Task.Factory.StartNew(())
{
for(var I=0);99999999(一)
{
新WLX .简单实用。雷迪斯。simpleredisqueue().LeftPush('test1 ',' a _ ' I . tostring());
}
});
系统。执行绪。任务。Task.Factory.StartNew(())
{
for(var I=0);99999999(一)
{
新WLX .简单实用。雷迪斯。simpleredisqueue().LeftPush('test1 ',' b _ ' I . tostring());
}
});
系统。执行绪。任务。Task.Factory.StartNew(())
{
for(var I=0);i 9999(一)
{
新WLX .简单实用。雷迪斯。simpleredisqueue().LeftPush('test1 ',' c _ ' I . tostring());
}
});
系统。执行绪。任务。Task.Factory.StartNew(())
{
for(var I=0);99999999(一)
{
新WLX .简单实用。雷迪斯。simpleredisqueue().LeftPush('test1 ',' e _ ' I . tostring());
}
});
系统。执行绪。任务。Task.Factory.StartNew(())
{
for(var I=0);99999999(一)
{
新WLX .简单实用。雷迪斯。simpleredisqueue().LeftPush('test1 ',' f _ ' I . tostring());
}
});
控制台(控制台).read key();
}
然后有消费队列的程序:
静态空干管(字符串[]参数)
{
var queue=new simpleressqueuse();
while(真)
{
var v=伫列右弹出(‘测试1’);
控制台(控制台).WriteLine(v==null)?'我不知道空':;
}
}
测试结果截图
对可靠性和稳定性要求不高的应用场景,可以使用再说一遍简单方便的实现。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。