日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

记一次Redis和NetMQ的测试

發布時間:2025/5/22 数据库 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 记一次Redis和NetMQ的测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Redis是一個高速緩存K-V數據庫,而NetMQ是ZeroMQ的C#實現版本,兩者是完全不同的東西。

最近做游戲服務器的時候想到,如果選擇一個組件來做服務器間通信的話,ZeroMQ絕對是一個不錯的選擇,而我們的服務器是用C#的開發的,就這樣,找到了NetMQ。

NetMQ上手很簡單。總結一下大致如下幾個步驟:

  • NuGet安裝類庫引用
  • 創建NetMQContext
  • 根據需要的通訊模型創建NetMQSocket
  • 監聽socket.Bind()或者連接socket.Connect()
  • 發送socket.Send()或者接收socket.Receive()
  • 釋放NetMQSocket和NetMQContext
  • 簡單的代碼如下

    using (var context = NetMQContext.Create()) using (var socket = context.CreatePullSocket()) {socket.Bind("ipc://111");//socket.Connect("ipc://111");string msg = socket.ReceiveFrameString(Encoding.UTF8); }

    測試NetMQ的時候,發現如果開啟了VS的異常捕獲,在Connect的時候會收到不少異常,不過這些異常NetMQ都捕獲處理了,似乎不會導致程序問題,當然強迫癥患者就不好辦了。

    而且當消化隊列的服務器吃緊的時候隊列中的積壓數量的查看、保存等等的確也是需要不少工作量的。

    于是想到不如再加個中間件,這個時候Redis就冒出來了。

    Redis的list也可以用來做隊列,而且配套的工具也多了,感覺不錯的樣子。那就不如測試下性能吧。

    因為手頭的Linux機在阿里云上,本地測試的話只有Windows可以用,所以,安裝了Redis的Windows版,地址在這里:https://github.com/MSOpenTech/redis

    ?

    直接下載Release版的就可以了,創建service-redis.exe的快捷方式,右鍵屬性,在目標的路徑后面追加配置文件,就像這樣:D:\Redis\redis-server.exe redis.windows.conf

    (懶漢不愿意操作命令行的簡便方式)

    然后雙擊運行,看到漂亮的文字圖形之后,Redis就開動了。

    接著是C#的對接,創建項目工程之后NuGet安裝Redis的Client驅動,流行的是Service.Stack.Redis,但Service.Stack在v4之后商業化了,免費使用有限制,隨手測下add1000次就出現了每小時只能add 6000的異常。所以不用它,換NServiceKit.Redis,有介紹是免費分支。

    簡單的Add示例如下

    using (RedisClient redisClient = new RedisClient(host)) {redisClient.Add("key1", "hello world!"); }

    而我要使用的是list的Enqueue和Dequeue,就是這樣:

    redisClient.EnqueueItemOnList("testList", "hello"); string msg = redisClient.DequeueItemOnList("testList");

    測試是醬紫的:

    首先開一個線程專注生產消息,生產的就是當時的時間。然后當前線程專注消費消息,獲取到消息生產的時間和消費到的時間,算出時間差,保存。

    最后輸出消息總數、發送和接收用的平均時間。

    我測試了10000個消息,差不多是這樣的代碼:

    int time = 0; while (true) {redisClient.RemoveAllFromList("list");Thread thread = new Thread(() =>{using (RedisClient redisClient2 = new RedisClient(host)){for (int i = 0; i < 10000; i++){var now = DateTime.Now;string v = now.ToString("O");redisClient2.EnqueueItemOnList("list", v);}}});thread.Start();List<TimeSpan> intervalArr = new List<TimeSpan>();int index = 0;while (index < 10000){string item = redisClient.DequeueItemFromList("list");if (item != null){index++;DateTime from = DateTime.Parse(item);var interval = DateTime.Now - from;intervalArr.Add(interval);}}Console.WriteLine("第{1}次,平均耗時:{0}, 數量:{2}", intervalArr.Average(x => x.TotalMilliseconds), time, intervalArr.Count);time++;Console.ReadLine(); }

    使用NetMQ的代碼也差不多這個意思。

    using (var context = NetMQContext.Create())using (var socket = context.CreatePullSocket()){socket.Bind("ipc://111");Thread t = new Thread(() =>{using (var context2 = NetMQContext.Create()){using (var socket2 = context2.CreatePushSocket()){socket2.Connect("ipc://111");for (int i = 0; i < 10000; i++){socket2.Send(DateTime.Now.ToString("O"), Encoding.UTF8);//socket.Receive(); }Thread.Sleep(1);}}});t.Start();List<TimeSpan> intervalArr = new List<TimeSpan>();for (int i = 0; i < 10000; i++){string word = socket.ReceiveFrameString(Encoding.UTF8);var from = DateTime.Parse(word);var to = DateTime.Now;var interval = to - from;intervalArr.Add(interval);}Console.WriteLine("第{1}次,平均耗時:{0}, 數量:{2}", intervalArr.Average(x => x.TotalMilliseconds), time, intervalArr.Count);time++;Console.ReadLine();} View Code

    預想的毫無疑問應該是ZeroMQ系的NetMQ更快,點對點的通訊和本地緩存比使用Redis少了和第三方(Redis)的交互,但實際測試下來,發現在數量級上沒有多大的區別,而且隱隱還是使用Redis比較快。

    ?

    測試做到這里,雖然不是很精確,也不知道NetMQ缺了啥,總之這樣的比較結果堅定了我使用Redis的心,何況游戲數據也有很多地方需要仰仗Redis來存儲的呢。

    ?

    轉載于:https://www.cnblogs.com/pasoraku/p/4673039.html

    總結

    以上是生活随笔為你收集整理的记一次Redis和NetMQ的测试的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 黄色成人av在线 | 高清欧美性猛交 | 四虎影院在线免费播放 | 中国黄色1级片 | 综合亚洲视频 | www.97av| 国产午夜免费视频 | 丰满少妇被猛烈进入高清播放 | 美女天天干 | 无码黑人精品一区二区 | 九九九在线观看 | 五月天中文字幕 | 91成人福利在线 | 国产在线精品观看 | 国产伦精品一区二区三区 | 久久高清内射无套 | 黄色三级网站在线观看 | 92国产精品| 免费看成人啪啪 | 日韩簧片在线观看 | 色婷婷六月天 | 久久久无码精品亚洲国产 | 18岁成年人网站 | 婷婷激情电影 | 国产精品成人一区 | 久久精品a| 亚洲AV无码阿娇国产精品 | 牛牛免费视频 | 岛国在线视频 | 亚洲色图视频在线 | 亚洲精品国产精品乱码在线观看 | 欧美xxxx黑人xyx性爽 | 午夜视频在线 | 蜜臀久久99精品久久久久久宅男 | www.av欧美| 日韩夫妻性生活 | 男女天堂av | 少妇av网| 亚洲精品国产成人 | 黄色网日本 | 欧美日韩综合一区二区三区 | 伊人影视久久 | 色秀视频在线观看 | 国产丝袜视频在线 | 欧美中文| 天堂素人 | 日韩午夜在线播放 | 成人精品在线视频 | jiizzyou欧美2| av中文在线播放 | 日韩欧美亚洲国产精品字幕久久久 | 日韩无马 | 国产一区二区在线免费 | 69精品久久 | 高h教授1v1h喂奶 | 亚洲一区二区三区四区在线播放 | 18岁成年人网站 | 成人黄色录像 | 1000部啪啪未满十八勿入 | 青草视频在线播放 | 污网站在线播放 | 男人天堂网在线观看 | 久久久久久久久久影视 | 欧美性白人极品1819hd | 少妇高潮一区二区三区99欧美 | 呦呦视频在线观看 | 青青久在线 | 男女激情免费网站 | 狼干综合 | 精品免费观看 | 少妇3p视频 | 欧美少妇一级片 | 欧美色图13p | 久久人人干 | 日本美女性高潮 | 亚洲男人在线 | www免费网站在线观看 | 色优久久 | 一级黄色在线播放 | 国产视频你懂得 | 中文字幕岛国 | 久久亚洲精品石原莉奈 | 国产午夜精品一区二区三区欧美 | 日本熟妇乱子伦xxxx | 青青草在线免费视频 | 国产网站免费观看 | 日本 奴役 捆绑 受虐狂xxxx | 草草影院一区二区三区 | 亚洲成人一区二区在线观看 | 在线视频导航 | 久久666 | 欧美福利第一页 | 无码人妻少妇色欲av一区二区 | 韩国三级中文字幕hd浴缸戏 | 亚洲天堂色 | 红桃视频一区 | 在线观看一区二区三区视频 | 中文字幕1 | 色婷婷网|