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

首頁 > 數據庫 > Redis > 正文

redis實現簡單隊列

2020-03-17 12:40:21
字體:
來源:轉載
供稿:網友

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

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

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

操作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); }}

測試代碼如下:

首先需要一個生產數據的程序

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);   }  }

測試結果截圖

redis,隊列

對可靠性和穩定性要求不高的應用場景,可以使用redis簡單方便的實現。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Redis頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产一区二区三区四区精 | 在线播放亚洲 | 亚洲 综合 欧美 动漫 丝袜图 | 日本一区二区视频在线观看 | 神秘电影91 | 7777视频| 一级α片免费看刺激高潮视频 | 欧美精品18 | 免费人成在线播放 | 大片毛片 | 九九热在线精品视频 | 欧美日韩精品不卡一区二区三区 | 中国洗澡偷拍在线播放 | 国产毛片毛片毛片 | 视频在线色| 国产精品亚洲欧美一级在线 | 欧美一级黄色免费看 | 欧美一区二区三区久久精品视 | 国产美女视频一区 | 成年免费在线视频 | 欧美福利视频一区二区三区 | 久久久久久久久久久av | 国产真实孩交 | 爱性久久久久久久 | 女女久久 | 91成人影院 | 亚洲精品久久久久久下一站 | 亚洲最新无码中文字幕久久 | 黄网站进入 | www69xxxxx| 久草成人在线 | 久久国产精 | 国产99久久久久久免费看农村 | 精品久久久一二三区播放播放播放视频 | 日本成人在线免费 | 国产69久久精品成人看 | 欧美精品1区 | 一级片九九| 日韩精品中文字幕在线观看 | 精品一区二区免费视频视频 | 国产日韩三区 |