国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

掌握這些Redis技巧,讓你掌控住千億數據量

存儲 存儲軟件 Redis
實際上NewLife.Redis是一個完整的Redis協議功能的實現,但是Redis的核心功能并沒有在這里面,而是在NewLife.Core里面。

一、Redis封裝架構講解

實際上NewLife.Redis是一個完整的Redis協議功能的實現,但是Redis的核心功能并沒有在這里面,而是在NewLife.Core里面。

這里可以打開看一下,NewLife.Core里面有一個NewLife.Caching的命名空間,里面有一個Redis類,里面實現了Redis的基本功能;另一個類是RedisClient是Redis的客戶端。

Redis的核心功能就是有這兩個類實現,RedisClient代表著Redis客戶端對服務器的一個連接。Redis真正使用的時候有一個Redis連接池,里面存放著很多個RedisClient對象。

 

掌握這些Redis技巧,讓你掌控住千億數據量

 

所以我們Redis的封裝有兩層,一層是NewLife.Core里面的Redis以及RedisClient;另一層就是NewLife.Redis。這里面的FullRedis是對Redis的實現了Redis的所有的高級功能。

這里你也可以認為NewLife.Redis是Redis的一個擴展。

二、Test實例講解Redis的基本使用

1、實例

打開Program.cs看下代碼:

 

掌握這些Redis技巧,讓你掌控住千億數據量

 

這里XTrace.UseConsole();是向控制臺輸出日志,方便調試使用查看結果。

接下來看第一個例子Test1,具體的我都在代碼中進行了注釋,大家可以看下:

 

掌握這些Redis技巧,讓你掌控住千億數據量

 

Set的時候,如果是字符串或者字符數據的話,Redis會直接保存起來(字符串內部機制也是保存二進制),如果是其他類型,會默認進行json序列化然后再保存起來。

Get的時候,如果是字符串或者字符數據會直接獲取,如果是其他類型會進行json反序列化。

Set第三個參數過期時間單位是秒。

vs調試小技巧,按F5或者直接工具欄“啟動”會編譯整個解決方案會很慢(VS默認),可以選中項目然后右鍵菜單選擇調試->啟動新實例,會只編譯將會用到的項目,這樣對調試來說會快很多。

大家運行調試后可以看到控制臺輸出的內容:向右的箭頭=》是ic.Log=XTrace.Log輸出的日志。

 

掌握這些Redis技巧,讓你掌控住千億數據量

 

字典的使用:對象的話,需要把json全部取出來,然后轉換成對象,而字典的話,就可以直接取某個字段。

隊列是List結構實現的,上游數據太多,下游處理不過來的時候,就可以使用這個隊列。上游的數據發到隊列,然后下游慢慢的消費。另一個應用,跨語言的協同工作,比方說其他語言實現的程序往隊列里面塞數據,然后另一種語言來進行消費處理。這種方式類似MQ的概念,雖然有點low,但是也很好用。

集合,用的比較多的是用在一個需要精確判斷的去重功能。像我們每天有三千萬訂單,這三千萬訂單可以有重復。這時候我想統計下一共有訂單,這時候直接數據庫group by是不大可能的,因為數據庫中分了十幾張表,這里分享個實戰經驗:

比方說攬收,商家發貨了,網點要把件收回來,但是收回來之前網點不知道自己有多少貨,這時候我們做了一個功能,也就是訂單會發送到我們公司來。我們會建一個time_site的key的集合,而且集合本身有去重的功能,而且我們可以很方便的通過set.Count功能來統計數量,當件被攬收以后,我們后臺把這個件從集合中Remove掉。然后這個Set中存在的就是網點還沒有攬收的件,這時候通過Count就會知道這個網點今天還有多少件沒有攬收。實際使用中這個數量比較大,因為有幾萬個網點。

Redis中布隆過濾器,去重的,面試的時候問的比較多。

小經驗分享:

數據庫中不合法的時間處理:判斷時間中的年份是否大于2000年,如果小于2000就認為不合法;習慣大于小于號不習慣用等于號,這樣可以處理很多意外的數據;

Set的時候最好指定過期時間,防止有些需要刪除的數據我們忘記刪了;

Redis異步盡量不用,因為Redis延遲本身很小,大概在100us-200us,再一個就是Redis本身是單線程的,異步任務切換的耗時比網絡耗時還要大;

List用法:物聯網中數據上傳,量比較大時,我們可以把這些數據先放在Redis的List中,比如說一秒鐘1萬條,然后再批量取出來然后批量插入數據庫中。這時候要設置好key,可以前綴+時間,對已處理的List可以進行remove移除。

2、壓力測試

接下來看第四個例子,我們直接做壓力測試,代碼如下:

 

掌握這些Redis技巧,讓你掌控住千億數據量

 

運行的結果如下圖所示:

 

掌握這些Redis技巧,讓你掌控住千億數據量

 

測試就是進行get,set remove,累加等的操作。大家可以看到在我本機上輕輕松松的到了六十萬,多線程的時候甚至到了一百多萬。

為什么會達到這么高的Ops呢?下面給大家說一下:

Bench會分根據線程數分多組進行添刪改壓力測試;

rand參數,是否隨機產生key/value;

batch批大小,分批執行讀寫操作,借助GetAll/SetAll進行優化。

3、Redis中NB的函數來提升性能

上面的操作如果大家都掌握了就基本算Redis入門了,接下來進行進階。如果能全然吃透,差不多就會比別人更勝一籌了。

GetAll()與SetAll()

GetAll:比方說我要取十個key,這個時候可以用getall。這時候Redis就執行了一次命令。比方說我要取10個key那么用get的話要取10次,如果用getall的話要用1次。1次getall時間大概是get的一點幾倍,但是10次get的話就是10倍的時間,這個賬你應該會算吧?強烈推薦大家用getall。

setall跟getall相似,批量設置K-V。

setall與getall性能很恐怖,官方公布的Ops也就10萬左右,為什么我們的測試輕輕松松到五十萬甚至上百萬?因為我們就用了setall,getall。如果get,set兩次以上,建議用getall,setall。

Redis管道Pipelin

比如執行10次命令會打包成一個包集體發過去執行,這里實現的方式是StartPipeline()開始,StopPipeline()結束中間的代碼就會以管道的形式執行。

這里推薦使用更強的武器,AutoPipeline自動管道屬性。管道操作到一定數量時,自動提交,默認0。使用了AutoPipeline,就不需要StartPipeline,StopPipeline指定管道的開始結束了。

Add與Replace

Add:Redis中沒有這個Key就添加,有了就不要添加,返回false;

Replace:有則替換,還會返回原來的值,沒有則不進行操作。

Add跟Replace就是實現Redis分布式鎖的關鍵。

三、Redis使用技巧,經驗分享

在項目的Readme中,這里摘錄下:

1、特性

在ZTO大數據實時計算廣泛應用,200多個Redis實例穩定工作一年多,每天處理近1億包裹數據,日均調用量80億次;

低延遲,Get/Set操作平均耗時200~600us(含往返網絡通信);

大吞吐,自帶連接池,最大支持1000并發;

高性能,支持二進制序列化(默認用的json,json很低效,轉成二進制性能會提升很多)。

2、Redis經驗分享

在Linux上多實例部署,實例個數等于處理器個數,各實例最大內存直接為本機物理內存,避免單個實例內存撐爆(比方說8核心處理器,那么就部署8個實例)。

把海量數據(10億+)根據key哈希(Crc16/Crc32)存放在多個實例上,讀寫性能成倍增長。

采用二進制序列化,而非常見的Json序列化。

合理設計每一對Key的Value大小,包括但不限于使用批量獲取,原則是讓每次網絡包控制在1.4k字節附近,減少通信次數(實際經驗幾十k,幾百k也是沒問題的)。

Redis客戶端的Get/Set操作平均耗時200~600us(含往返網絡通信),以此為參考評估網絡環境和Redis客戶端組件(達不到就看一下網絡,序列化方式等等)。

使用管道Pipeline合并一批命令。

Redis的主要性能瓶頸是序列化、網絡帶寬和內存大小,濫用時處理器也會達到瓶頸。

在此我向大家推薦一個架構學習交流圈:681065582 幫助突破J瓶頸 提升思維能力

其它可查優化技巧。

以上經驗,源自于300多個實例4T以上空間一年多穩定工作的經驗,并按照重要程度排了先后順序,可根據場景需要酌情采用。

3、緩存Redis的兄弟姐妹

Redis實現ICache接口,它的孿生兄弟MemoryCache,內存緩存,千萬級吞吐率。

各應用強烈建議使用ICache接口編碼設計,小數據時使用MemoryCache實現;數據增大(10萬)以后,改用Redis實現,不需要修改業務代碼。

四、關于一些疑問的回復

這一Part我們會來聊聊大數據中Redis使用的經驗:

Q1:一條數據多個key怎么設置比較合理?

A1:如果對性能要求不是很高直接用json序列化實體就好,沒必要使用字典進行存儲。

Q2:隊列跟List有什么區別?左進右出的話用List還是用隊列比較好?

A2:隊列其實就是用List實現的,也是基于List封裝的。左進右出的話直接隊列就好。Redis的List結構比較有意思,既可以左進右出,也能右進左出。所以它既可以實現列表結構,也能隊列,還能實現棧。

Q3:存放多個字段的類性能一樣嗎?

A3:大部分場景都不會有偏差,可能對于大公司數據量比較大的場景會有些偏差。

Q4:大數據寫入到數據庫之后,比如數據到億以上的時候,統計分析、查詢這塊,能不能分享些經驗。

A4:分表分庫,拆分到一千萬以內。

Q5:CPU為何暴漲?

A5:程序員終極理念——CPU達到百分百,然后性能達到最優,盡量不要浪費。最痛恨的是——如果CPU不到百分百,性能沒法提升了,說明代碼有問題。

 

掌握這些Redis技巧,讓你掌控住千億數據量

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2018-12-10 09:05:06

Redis數據庫百億數據量

2018-04-10 14:36:18

數據庫MySQL優化技巧

2022-11-04 13:06:47

JVMJava程序

2015-12-01 09:02:58

ios界面流暢

2016-07-07 09:55:15

2021-10-25 14:55:38

Linux技巧命令

2017-10-18 10:51:24

攢機CPU散熱器

2021-09-25 13:12:47

數據開發架構

2023-06-09 07:55:09

2019-11-20 10:38:36

路由路由協議路由器

2022-07-19 07:30:06

BigDecimal運算float

2017-07-19 16:34:44

筆記本拆解技巧

2019-12-25 14:19:21

Python編程語言Java

2023-06-13 13:52:00

Java 7線程池

2020-11-09 07:25:20

函數 JavaScript數據

2020-03-23 10:51:40

面試技巧技術

2023-07-26 07:41:53

Python線程狀態

2011-10-28 11:27:58

云計算VMware

2025-02-17 08:50:00

CSS代碼JavaScript

2021-03-18 07:52:42

代碼性能技巧開發
點贊
收藏

51CTO技術棧公眾號

国产小黄视频| 亚洲精品大全| 午夜精品一区二区三区三上悠亚 | 国产成+人+综合+亚洲欧美| 日韩在线观看一区 | 成人av在线播放网址| 亚洲熟妇av一区二区三区| 成人av综合一区| 怡红院亚洲色图| 亚洲一区二区三区美女| 成人18在线| 日韩精品黄色网| 欧美第一在线视频| 91九色单男在线观看| 日韩电影一区二区三区| a级免费在线观看| 91色porny| 久久久久久久国产| 99精品小视频| 欧美爱爱视频网站| 国产精品女上位| 超碰在线国产| 精品国产拍在线观看| 久久国产电影| 一区二区三区在线视频111| 久久综合成人精品亚洲另类欧美| 又黄又爽的视频在线观看| 91麻豆精品国产91久久久久久久久 | 日韩精品一区二区三区四区五区| 在线看黄色av| yellow中文字幕久久| 日韩在线观看| 奇米777四色影视在线看| 亚洲成人综合网站| 中文在线中文资源| 91系列在线播放| 国产成人午夜精品影院观看视频| 一级片a一级片| 亚洲欧美色图片| 欧美国产高清| 日韩欧美视频一区二区三区四区| 理论片在线不卡免费观看| 伊人蜜桃色噜噜激情综合| 99精品国产热久久91蜜凸| 超碰在线首页| 国产一区二区三区精品久久久| 精品久久精品| 男人的天堂狠狠干| 欧美三片在线视频观看| jazzjazz国产精品麻豆| 日韩欧美视频一区二区| 2019中文字幕在线| h1515四虎成人| 丝袜美腿综合| 91大神影片| 成人黄色片在线| 亚洲丶国产丶欧美一区二区三区| 日韩最新av| 欧美视频自拍偷拍| 咪咪网在线视频| 亚洲二区自拍| 91精品国产高清自在线| 欧美在线观看网址综合| 99久久国产综合精品女不卡| 亚洲伦理网站| 毛片在线播放视频| 亚洲天堂网在线观看| 波多野结衣一区二区三区| av在线资源站| 亚洲最大色综合成人av| 欧美精品丝袜中出| 免费看av成人| 99爱免费视频| 91亚洲永久免费精品| 91黄视频在线观看| 欧美日韩亚洲一区三区| 欧美变态视频| 99国产超薄肉色丝袜交足的后果 | 国产一区三区在线播放| 久久一区二区三区av| 精品视频偷偷看在线观看| 久久性感美女视频| 青青草视频在线视频| 91麻豆蜜桃一区二区三区| 日韩精品亚洲人成在线观看| 国产精品88久久久久久妇女| 午夜欧美视频在线观看| 麻豆精品新av中文字幕| 亚洲一区二区三区成人| 国产成人亚洲综合91| 99视频在线精品| 欧美调教sm| 亚洲一区二区三区午夜| 日韩美女一区二区三区四区| 一区二区三区四区五区精品视频 | 99久久精品免费看国产一区二区三区| 国产高清久久久| 成人动态视频| 蜜臀av免费一区二区三区| 国产女女做受ⅹxx高潮| 激情伊人五月天久久综合| 久久精品亚洲麻豆av一区二区| 伊人久久亚洲| 精品少妇一区二区30p| 99精品国产一区二区三区不卡| 欧美aaa视频| 精品久久久久久亚洲综合网| 亚洲特级毛片| fc2ppv国产精品久久| 亚洲精品国产精品国自产观看| 日韩成人黄色av| 成人性生交大合| 久久的色偷偷| 国产一区二区三区毛片| 92国产精品观看| 台湾亚洲精品一区二区tv| 浪潮av在线| 国产日韩久久| 亚洲国产精品va在看黑人| www.亚洲免费av| 99re6热只有精品免费观看| 欧美黑人巨大| 秋霞在线观看一区二区三区| 亚洲区一区二区| 国产精品视频你懂的| 婷婷丁香综合| 福利写真视频网站在线| 国语对白做受xxxxx在线中国| 国产精品69av| 欧美一二三四在线| av电影一区二区| 日韩一区三区| 国产网红女主播精品视频| 欧美日韩在线中文| 91免费国产视频| 亚洲欧洲日产国码av系列天堂| 国产欧美精品日韩区二区麻豆天美| 国产精品一线天粉嫩av| 在线观看男女av免费网址| 成年人黄色片视频| 91精品视频专区| 亚洲品质视频自拍网| 一区二区高清视频在线观看| 日韩精彩视频在线观看| 伊人久久噜噜噜躁狠狠躁| 成人精品一区| 日本www高清视频| 91精品免费看| 欧美aaaaa级| 久久人人爽人人爽人人片av高请 | 经典三级久久| 国产一级在线| www一区二区www免费| 国产精品稀缺呦系列在线| 精品美女一区二区三区| 国产精品久久久久影院亚瑟| 一本不卡影院| 日韩精品视频中文字幕| 成人免费观看视频大全| 日韩在线第三页| 欧美日产一区二区三区在线观看| 韩剧1988免费观看全集| 亚洲精品久久久久久久久| 五月激情综合婷婷| 94色蜜桃网一区二区三区| 91亚洲成人| 国产人与zoxxxx另类91| av网在线观看| 91极品视频在线观看| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 青青在线免费观看| 国产不卡一区二区在线观看| 草民午夜欧美限制a级福利片| 欧美日韩免费高清一区色橹橹| 国产丝袜欧美中文另类| 日韩国产在线观看一区| 国内精品久久久久久久久电影网| 欧美男男tv网站在线播放| 国产乱xxⅹxx国语对白| 久久这里只有精品23| 欧美日韩一区综合| 国产欧美一区二区三区四区| 久久亚洲精品视频| 亚洲精选中文字幕| 欧美一级欧美一级在线播放| 亚洲一二三四久久| 国产色综合一区| 91成人免费看| 视频黄页在线| 另类一区二区| 91麻豆精品国产91久久久平台| 日韩二区在线观看| 亚洲片区在线| 精品乱码一区二区三区四区| 1024国产在线| 天堂电影在线| 天堂在线看视频| 免费的av电影| www.99在线| 99精品视频播放|