麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > Redis > 正文

redis實現(xiàn)簡單隊列

2020-10-28 21:38:47
字體:
供稿:網(wǎng)友

在工作中,時常會有用到隊列的場景,比較常見的用rabbitMQ這些專業(yè)的組件,官網(wǎng)地址是:http://www.rabbitmq.com,重要的是官方有.net的客戶端,但是如果對rabbitMQ不熟悉的話,建議使用第三方封裝好的 EasyNetQ,rabbitMQ比較適合對安全性,穩(wěn)定性要求較高的地方,但有時我們也會有對這方面要求不是很高的場景,比如:文章閱讀數(shù),實時性要求不是很高的地方,所以我想到了用redis來做隊列。

redis 的List結(jié)構(gòu)本身就是一個鏈表 (雙向鏈表),所以符合我們的隊列先進先出的要求。

我用的是StackExchange.Redis 這個組件來操作redis,以前一直用 Service.Stack.Redis,后來該類庫升級后對個人使用有次數(shù)限制,需要付費使用才能沒有調(diào)用限制.

操作redis簡單封裝如下:

public static class RedisHelper {  public static int i = 0;  private static string redisConnectionString = ConfigurationManager.AppSettings["RedisConnectionString"].ToString();   private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>  {   i++;   return ConnectionMultiplexer.Connect(redisConnectionString);  });   public static ConnectionMultiplexer Instance  {   get   {    return lazyConnection.Value;   }  } }

有了這個操作類后,我們就可以操作redis了,簡單的對 list 的操作如下:

/// <summary>/// 簡單 redis 隊列/// </summary>public class SimpleRedisQueue{ public void LeftPush(string key, string value) {  var redis = RedisHelper.Instance.GetDatabase();  redis.ListLeftPush(key, value); }   public string RightPop(string key) {  var redis = RedisHelper.Instance.GetDatabase();  return redis.ListRightPop(key); }}

測試代碼如下:

首先需要一個生產(chǎn)數(shù)據(jù)的程序

static void Main(string[] args)  {   System.Threading.Tasks.Task.Factory.StartNew(() =>   {    for (var i = 0; i < 99999999; i++)    {     new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "a_" + i.ToString());    }   });     System.Threading.Tasks.Task.Factory.StartNew(() =>   {    for (var i = 0; i < 99999999; i++)    {     new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "b_" + i.ToString());    }   });   System.Threading.Tasks.Task.Factory.StartNew(() =>   {    for (var i = 0; i < 9999; i++)    {     new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "c_" + i.ToString());    }   });   System.Threading.Tasks.Task.Factory.StartNew(() =>   {    for (var i = 0; i < 99999999; i++)    {     new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "e_" + i.ToString());    }   });   System.Threading.Tasks.Task.Factory.StartNew(() =>   {    for (var i = 0; i < 99999999; i++)    {     new WLX.SimpleUtil.Redis.SimpleRedisQueue().LeftPush("test1", "f_" + i.ToString());    }   });   Console.ReadKey();  }

然后有消費隊列的程序:

static void Main(string[] args)  {   var queue = new SimpleRedisQueue();   while (true)   {    var v = queue.RightPop("test1");    Console.WriteLine(v == null ? "空" : v);   }  }

測試結(jié)果截圖

對可靠性和穩(wěn)定性要求不高的應(yīng)用場景,可以使用redis簡單方便的實現(xiàn)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 精品亚洲国产视频 | 爱性久久久久久久 | 日韩字幕在线观看 | 亚洲黑人在线观看 | 日韩黄色免费电影 | 青青国产在线视频 | 大学生一级毛片在线视频 | 99re热精品视频 | 国产精品爆操 | 亚洲性在线视频 | 羞羞网站视频 | 成人一级在线 | 久久96国产精品久久秘臀 | 斗破苍穹在线观看免费完整观看 | 暴力肉体进入hdxxxx0 | 久久噜噜噜精品国产亚洲综合 | 精品亚洲二区 | 日韩视频中文 | 免费国产自久久久久三四区久久 | 欧美日韩在线免费观看 | 国产成人高潮免费观看精品 | 黄色片在线免费播放 | 精品人人人人 | 在线亚洲欧美日韩 | 欧美日韩在线视频一区 | 国产在线精品一区二区三区不卡 | www中文在线 | 久久艳片 | h视频在线观看免费 | 99精品视频一区二区三区 | wwwxxx国产 | 久色成人网| 毛片免费视频播放 | 日本韩国欧美一级片 | 亚洲精久| 国产欧美一区二区三区免费看 | 久久久久久麻豆 | 亚洲精品久久久久久久久久 | 久久国产精品电影 | 日本a级一区 | 日本精品黄色 |