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

百億數(shù)據(jù)量下,掌握這些Redis技巧你大概就穩(wěn)住了全場(chǎng)

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù) Redis
今天將會(huì)跟大家討論一些Redis在大數(shù)據(jù)中的使用,包括一些Redis的使用技巧和其他的一些內(nèi)容。

今天將會(huì)跟大家討論一些Redis在大數(shù)據(jù)中的使用,包括一些Redis的使用技巧和其他的一些內(nèi)容。

首先給大家個(gè)地址:

https://github.com/NewLifeX/NewLife.Redis

源碼以及實(shí)例都在里面,當(dāng)然今天的內(nèi)容也是按照里面的實(shí)例來(lái)進(jìn)行的,大家可以先進(jìn)行下載。

這里也附上Redis的下載地址:

windows:

https://github.com/MicrosoftArchive/redis/releases

http://x.newlifex.com/Redis-x64-3.2.100.msi

Linux:

https://redis.io/download

一、Redis封裝架構(gòu)講解

實(shí)際上NewLife.Redis是一個(gè)完整的Redis協(xié)議功能的實(shí)現(xiàn),但是Redis的核心功能并沒(méi)有在這里面,而是在NewLife.Core里面。

這里可以打開(kāi)看一下,NewLife.Core里面有一個(gè)NewLife.Caching的命名空間,里面有一個(gè)Redis類,里面實(shí)現(xiàn)了Redis的基本功能;另一個(gè)類是RedisClient是Redis的客戶端。

Redis的核心功能就是有這兩個(gè)類實(shí)現(xiàn),RedisClient代表著Redis客戶端對(duì)服務(wù)器的一個(gè)連接。Redis真正使用的時(shí)候有一個(gè)Redis連接池,里面存放著很多個(gè)RedisClient對(duì)象。

百億數(shù)據(jù)量下,掌握這些Redis技巧你大概就穩(wěn)住了全場(chǎng)

 

所以我們Redis的封裝有兩層,一層是NewLife.Core里面的Redis以及RedisClient;另一層就是NewLife.Redis。這里面的FullRedis是對(duì)Redis的實(shí)現(xiàn)了Redis的所有的高級(jí)功能。

這里你也可以認(rèn)為NewLife.Redis是Redis的一個(gè)擴(kuò)展。

二、Test實(shí)例講解Redis的基本使用

1、實(shí)例

打開(kāi)Program.cs看下代碼:

 

 

 

 

這里XTrace.UseConsole();是向控制臺(tái)輸出日志,方便調(diào)試使用查看結(jié)果。

接下來(lái)看第一個(gè)例子Test1,具體的我都在代碼中進(jìn)行了注釋,大家可以看下:

 

 

 

 

  • Set的時(shí)候,如果是字符串或者字符數(shù)據(jù)的話,Redis會(huì)直接保存起來(lái)(字符串內(nèi)部機(jī)制也是保存二進(jìn)制),如果是其他類型,會(huì)默認(rèn)進(jìn)行json序列化然后再保存起來(lái)。
  • Get的時(shí)候,如果是字符串或者字符數(shù)據(jù)會(huì)直接獲取,如果是其他類型會(huì)進(jìn)行json反序列化。
  • Set第三個(gè)參數(shù)過(guò)期時(shí)間單位是秒。
  • vs調(diào)試小技巧,按F5或者直接工具欄“啟動(dòng)”會(huì)編譯整個(gè)解決方案會(huì)很慢(VS默認(rèn)),可以選中項(xiàng)目然后右鍵菜單選擇調(diào)試->啟動(dòng)新實(shí)例,會(huì)只編譯將會(huì)用到的項(xiàng)目,這樣對(duì)調(diào)試來(lái)說(shuō)會(huì)快很多。
  • 大家運(yùn)行調(diào)試后可以看到控制臺(tái)輸出的內(nèi)容:向右的箭頭=》是ic.Log=XTrace.Log輸出的日志。

 

 

 

 

  • 字典的使用:對(duì)象的話,需要把json全部取出來(lái),然后轉(zhuǎn)換成對(duì)象,而字典的話,就可以直接取某個(gè)字段。
  • 隊(duì)列是List結(jié)構(gòu)實(shí)現(xiàn)的,上游數(shù)據(jù)太多,下游處理不過(guò)來(lái)的時(shí)候,就可以使用這個(gè)隊(duì)列。上游的數(shù)據(jù)發(fā)到隊(duì)列,然后下游慢慢的消費(fèi)。另一個(gè)應(yīng)用,跨語(yǔ)言的協(xié)同工作,比方說(shuō)其他語(yǔ)言實(shí)現(xiàn)的程序往隊(duì)列里面塞數(shù)據(jù),然后另一種語(yǔ)言來(lái)進(jìn)行消費(fèi)處理。這種方式類似MQ的概念,雖然有點(diǎn)low,但是也很好用。
  • 集合,用的比較多的是用在一個(gè)需要精確判斷的去重功能。像我們每天有三千萬(wàn)訂單,這三千萬(wàn)訂單可以有重復(fù)。這時(shí)候我想統(tǒng)計(jì)下一共有訂單,這時(shí)候直接數(shù)據(jù)庫(kù)group by是不大可能的,因?yàn)閿?shù)據(jù)庫(kù)中分了十幾張表,這里分享個(gè)實(shí)戰(zhàn)經(jīng)驗(yàn):
  • 比方說(shuō)攬收,商家發(fā)貨了,網(wǎng)點(diǎn)要把件收回來(lái),但是收回來(lái)之前網(wǎng)點(diǎn)不知道自己有多少貨,這時(shí)候我們做了一個(gè)功能,也就是訂單會(huì)發(fā)送到我們公司來(lái)。我們會(huì)建一個(gè)time_site的key的集合,而且集合本身有去重的功能,而且我們可以很方便的通過(guò)set.Count功能來(lái)統(tǒng)計(jì)數(shù)量,當(dāng)件被攬收以后,我們后臺(tái)把這個(gè)件從集合中Remove掉。然后這個(gè)Set中存在的就是網(wǎng)點(diǎn)還沒(méi)有攬收的件,這時(shí)候通過(guò)Count就會(huì)知道這個(gè)網(wǎng)點(diǎn)今天還有多少件沒(méi)有攬收。實(shí)際使用中這個(gè)數(shù)量比較大,因?yàn)橛袔兹f(wàn)個(gè)網(wǎng)點(diǎn)。
  • Redis中布隆過(guò)濾器,去重的,面試的時(shí)候問(wèn)的比較多。

小經(jīng)驗(yàn)分享:

  • 數(shù)據(jù)庫(kù)中不合法的時(shí)間處理:判斷時(shí)間中的年份是否大于2000年,如果小于2000就認(rèn)為不合法;習(xí)慣大于小于號(hào)不習(xí)慣用等于號(hào),這樣可以處理很多意外的數(shù)據(jù);
  • Set的時(shí)候最好指定過(guò)期時(shí)間,防止有些需要?jiǎng)h除的數(shù)據(jù)我們忘記刪了;
  • Redis異步盡量不用,因?yàn)镽edis延遲本身很小,大概在100us-200us,再一個(gè)就是Redis本身是單線程的,異步任務(wù)切換的耗時(shí)比網(wǎng)絡(luò)耗時(shí)還要大;
  • List用法:物聯(lián)網(wǎng)中數(shù)據(jù)上傳,量比較大時(shí),我們可以把這些數(shù)據(jù)先放在Redis的List中,比如說(shuō)一秒鐘1萬(wàn)條,然后再批量取出來(lái)然后批量插入數(shù)據(jù)庫(kù)中。這時(shí)候要設(shè)置好key,可以前綴+時(shí)間,對(duì)已處理的List可以進(jìn)行remove移除。

2、壓力測(cè)試

接下來(lái)看第四個(gè)例子,我們直接做壓力測(cè)試,代碼如下:

 

 

 

 

運(yùn)行的結(jié)果如下圖所示:

 

 

 

 

測(cè)試就是進(jìn)行g(shù)et,set remove,累加等的操作。大家可以看到在我本機(jī)上輕輕松松的到了六十萬(wàn),多線程的時(shí)候甚至到了一百多萬(wàn)。

為什么會(huì)達(dá)到這么高的Ops呢?下面給大家說(shuō)一下:

  • Bench會(huì)分根據(jù)線程數(shù)分多組進(jìn)行添刪改壓力測(cè)試;
  • rand參數(shù),是否隨機(jī)產(chǎn)生key/value;
  • batch批大小,分批執(zhí)行讀寫操作,借助GetAll/SetAll進(jìn)行優(yōu)化。

3、Redis中NB的函數(shù)來(lái)提升性能

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

GetAll()與SetAll()

GetAll:比方說(shuō)我要取十個(gè)key,這個(gè)時(shí)候可以用getall。這時(shí)候Redis就執(zhí)行了一次命令。比方說(shuō)我要取10個(gè)key那么用get的話要取10次,如果用getall的話要用1次。1次getall時(shí)間大概是get的一點(diǎn)幾倍,但是10次get的話就是10倍的時(shí)間,這個(gè)賬你應(yīng)該會(huì)算吧?強(qiáng)烈推薦大家用getall。

setall跟getall相似,批量設(shè)置K-V。

setall與getall性能很恐怖,官方公布的Ops也就10萬(wàn)左右,為什么我們的測(cè)試輕輕松松到五十萬(wàn)甚至上百萬(wàn)?因?yàn)槲覀兙陀昧藄etall,getall。如果get,set兩次以上,建議用getall,setall。

Redis管道Pipeline

比如執(zhí)行10次命令會(huì)打包成一個(gè)包集體發(fā)過(guò)去執(zhí)行,這里實(shí)現(xiàn)的方式是StartPipeline()開(kāi)始,StopPipeline()結(jié)束中間的代碼就會(huì)以管道的形式執(zhí)行。

這里推薦使用更強(qiáng)的武器,AutoPipeline自動(dòng)管道屬性。管道操作到一定數(shù)量時(shí),自動(dòng)提交,默認(rèn)0。使用了AutoPipeline,就不需要StartPipeline,StopPipeline指定管道的開(kāi)始結(jié)束了。

Add與Replace

  • Add:Redis中沒(méi)有這個(gè)Key就添加,有了就不要添加,返回false;
  • Replace:有則替換,還會(huì)返回原來(lái)的值,沒(méi)有則不進(jìn)行操作。

Add跟Replace就是實(shí)現(xiàn)Redis分布式鎖的關(guān)鍵。

三、Redis使用技巧,經(jīng)驗(yàn)分享

在項(xiàng)目的Readme中,這里摘錄下:

1、特性

  • 在ZTO大數(shù)據(jù)實(shí)時(shí)計(jì)算廣泛應(yīng)用,200多個(gè)Redis實(shí)例穩(wěn)定工作一年多,每天處理近1億包裹數(shù)據(jù),日均調(diào)用量80億次;
  • 低延遲,Get/Set操作平均耗時(shí)200~600us(含往返網(wǎng)絡(luò)通信);
  • 大吞吐,自帶連接池,最大支持1000并發(fā);
  • 高性能,支持二進(jìn)制序列化(默認(rèn)用的json,json很低效,轉(zhuǎn)成二進(jìn)制性能會(huì)提升很多)。

2、Redis經(jīng)驗(yàn)分享

  • 在Linux上多實(shí)例部署,實(shí)例個(gè)數(shù)等于處理器個(gè)數(shù),各實(shí)例最大內(nèi)存直接為本機(jī)物理內(nèi)存,避免單個(gè)實(shí)例內(nèi)存撐爆(比方說(shuō)8核心處理器,那么就部署8個(gè)實(shí)例)。
  • 把海量數(shù)據(jù)(10億+)根據(jù)key哈希(Crc16/Crc32)存放在多個(gè)實(shí)例上,讀寫性能成倍增長(zhǎng)。
  • 采用二進(jìn)制序列化,而非常見(jiàn)的Json序列化。
  • 合理設(shè)計(jì)每一對(duì)Key的Value大小,包括但不限于使用批量獲取,原則是讓每次網(wǎng)絡(luò)包控制在1.4k字節(jié)附近,減少通信次數(shù)(實(shí)際經(jīng)驗(yàn)幾十k,幾百k也是沒(méi)問(wèn)題的)。
  • Redis客戶端的Get/Set操作平均耗時(shí)200~600us(含往返網(wǎng)絡(luò)通信),以此為參考評(píng)估網(wǎng)絡(luò)環(huán)境和Redis客戶端組件(達(dá)不到就看一下網(wǎng)絡(luò),序列化方式等等)。
  • 使用管道Pipeline合并一批命令。
  • Redis的主要性能瓶頸是序列化、網(wǎng)絡(luò)帶寬和內(nèi)存大小,濫用時(shí)處理器也會(huì)達(dá)到瓶頸。
  • 其它可查優(yōu)化技巧。

以上經(jīng)驗(yàn),源自于300多個(gè)實(shí)例4T以上空間一年多穩(wěn)定工作的經(jīng)驗(yàn),并按照重要程度排了先后順序,可根據(jù)場(chǎng)景需要酌情采用。

3、緩存Redis的兄弟姐妹

Redis實(shí)現(xiàn)ICache接口,它的孿生兄弟MemoryCache,內(nèi)存緩存,千萬(wàn)級(jí)吞吐率。

各應(yīng)用強(qiáng)烈建議使用ICache接口編碼設(shè)計(jì),小數(shù)據(jù)時(shí)使用MemoryCache實(shí)現(xiàn);數(shù)據(jù)增大(10萬(wàn))以后,改用Redis實(shí)現(xiàn),不需要修改業(yè)務(wù)代碼。

四、關(guān)于一些疑問(wèn)的回復(fù)

這一Part我們會(huì)來(lái)聊聊大數(shù)據(jù)中Redis使用的經(jīng)驗(yàn):

Q1:一條數(shù)據(jù)多個(gè)key怎么設(shè)置比較合理?

A1:如果對(duì)性能要求不是很高直接用json序列化實(shí)體就好,沒(méi)必要使用字典進(jìn)行存儲(chǔ)。

Q2:隊(duì)列跟List有什么區(qū)別?左進(jìn)右出的話用List還是用隊(duì)列比較好?

A2:隊(duì)列其實(shí)就是用List實(shí)現(xiàn)的,也是基于List封裝的。左進(jìn)右出的話直接隊(duì)列就好。Redis的List結(jié)構(gòu)比較有意思,既可以左進(jìn)右出,也能右進(jìn)左出。所以它既可以實(shí)現(xiàn)列表結(jié)構(gòu),也能隊(duì)列,還能實(shí)現(xiàn)棧。

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

A3:大部分場(chǎng)景都不會(huì)有偏差,可能對(duì)于大公司數(shù)據(jù)量比較大的場(chǎng)景會(huì)有些偏差。

Q4:大數(shù)據(jù)寫入到數(shù)據(jù)庫(kù)之后,比如數(shù)據(jù)到億以上的時(shí)候,統(tǒng)計(jì)分析、查詢這塊,能不能分享些經(jīng)驗(yàn)。

A4:分表分庫(kù),拆分到一千萬(wàn)以內(nèi)。

Q5:CPU為何暴漲?

A5:程序員終極理念——CPU達(dá)到百分百,然后性能達(dá)到最優(yōu),盡量不要浪費(fèi)。最痛恨的是——如果CPU不到百分百,性能沒(méi)法提升了,說(shuō)明代碼有問(wèn)題。

√視頻地址

視頻已經(jīng)上傳至百度云,大家可以自行下載觀看。

鏈接:

https://pan.baidu.com/s/1sOW_PLjxQE8C2msbDfizeA

提取碼:c7dp

觀看指南(笑笑提供)

 

 


 

 

雖然Redis大家會(huì)用,但是我們可能平時(shí)不會(huì)有像這樣的大數(shù)據(jù)使用場(chǎng)景。希望本文能夠給大家一些值得借鑒的經(jīng)驗(yàn)。 

責(zé)任編輯:龐桂玉 來(lái)源: DBAplus社群
相關(guān)推薦

2019-12-24 08:46:49

Redis技巧數(shù)據(jù)量

2019-01-08 11:57:10

Redis存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)

2018-05-31 14:16:47

SQL ServerMySQL數(shù)據(jù)遷移

2018-04-10 14:36:18

數(shù)據(jù)庫(kù)MySQL優(yōu)化技巧

2020-05-22 13:59:13

SSD內(nèi)存DDR4

2019-09-09 14:13:31

電商數(shù)據(jù)分析指標(biāo)

2022-11-04 13:06:47

JVMJava程序

2019-11-07 09:49:38

監(jiān)控優(yōu)化技巧

2021-10-25 14:55:38

Linux技巧命令

2025-09-03 10:01:05

2019-11-20 10:38:36

路由路由協(xié)議路由器

2022-07-19 07:30:06

BigDecimal運(yùn)算float

2017-07-19 16:34:44

筆記本拆解技巧

2012-12-26 09:23:56

數(shù)據(jù)庫(kù)優(yōu)化

2022-12-19 08:30:51

ViteWebpack

2020-11-09 07:25:20

函數(shù) JavaScript數(shù)據(jù)

2020-03-23 10:51:40

面試技巧技術(shù)

2021-03-18 07:52:42

代碼性能技巧開(kāi)發(fā)

2020-03-08 16:58:51

Chrome瀏覽器代碼

2020-10-28 11:20:55

vue項(xiàng)目技
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲专区在线视频| 一本大道东京热无码aⅴ| 国产一区一一区高清不卡| 亚洲精品一二三| 亚洲AV无码成人精品一区| 7777久久香蕉成人影院| 国产98色在线| 香蕉视频一区二区三区| 欧美精品福利在线| 日韩精品一区二区三区中文在线| 精品捆绑美女sm三区 | 欧美一区二区三区视频免费 | www.三区| 国产精品一级片在线观看| 亚洲成成品网站| 尤物网在线观看| 欧美四级电影网| 电影天堂爱爱爱爱| 国产精品午夜电影| 国产成人久久777777| 永久免费看mv网站入口亚洲| 夜夜嗨av一区二区三区免费区 | 婷婷久久综合九色综合伊人色| 一区二区三区不卡在线| 美日韩黄色大片| 豆国产97在线| 91网站在线播放| 91欧美日韩在线| 日韩精品中文在线观看| 丝袜国产在线| 日韩av一区二区在线| 欧洲av不卡| 久久亚洲精品小早川怜子66| 亚洲一区二区电影| 国产精品久久久久av| 亚洲男女av一区二区| 亚洲在线免费视频| 视频一区视频二区在线观看| 最新精品视频| 欧美极品美女视频| 日韩精品123| 欧美精品一区二区三区很污很色的| 新版的欧美在线视频| 久久久久久久一区二区| 日韩精品首页| 欧美一级日本a级v片| 国产一区三区三区| 四虎国产精品成人免费4hu| 色综合久久久久综合| h片在线观看视频免费免费| 欧美成人免费视频| 亚洲精彩视频| 日韩中文在线字幕| 中文一区一区三区高中清不卡| 91网页版在线登录入口| 精品裸体舞一区二区三区| 91国内精品| 国产另类第一区| 成人性生交大片免费| 午夜爽爽视频| 日韩成人中文字幕在线观看| 国产精品45p| 久久人人九九| 国产亚洲一区二区三区在线观看| 在线观看免费国产小视频| 精品日产卡一卡二卡麻豆| 日本一区二区三区电影免费观看| 国产成人亚洲综合91精品| 美女黄网久久| 成人免费观看在线网址| 欧美一区二区日韩一区二区| 国产精品黄色片| 亚洲自拍偷拍视频| av电影天堂一区二区在线| 色老板在线视频| 亚洲毛片在线观看| 99re66热这里只有精品8| 欧美在线观看黄| 欧美性猛交xxxx| 91精品一区二区三区久久久久久| 在线免费三级电影网站| 国产精品激情自拍| 国产成人综合亚洲91猫咪| 欧美成人综合在线| 欧美激情一级欧美精品| 日本成人在线一区| 中国在线观看免费国语版电影| 亚洲免费视频网站| 国产一区清纯| 奇米影视四色在线| 日韩精品视频在线观看网址| 成人在线电影在线观看视频| 国产一二三在线视频| 欧美日本一区二区三区四区| 一呦二呦三呦精品国产| 精品一区二区日本| 亚洲国产日韩一级| 色999久久久精品人人澡69| 欧美激情专区| 亚洲成人av电影| 亚洲经典视频| 中文一区一区三区免费| 欧洲精品中文字幕| 精品视频一二| 在线精品日韩| 欧美日韩一区三区四区| 精品免费在线| 成人免费在线观看视频网站| 亚洲裸体xxxx| 人人超碰91尤物精品国产| 国产在线91| 国产精品入口免费视频一| 成人午夜免费视频| 松下纱荣子在线观看| 久久亚洲综合网| 欧美在线观看禁18| 亚洲中无吗在线| 日韩欧美亚洲| 欧美国产日韩xxxxx| 成人动漫一区二区在线| 不卡福利视频| 综合久久国产| 亚洲国产成人爱av在线播放| 亚洲一区久久| 久cao在线| 欧美日韩电影一区二区三区| 日本韩国欧美在线| 亚洲视频一二| 日本中文字幕在线2020| 国产午夜精品一区| 欧美一级二级在线观看| 性欧美长视频| 欧美亚洲系列| 国产欧美综合一区| 一区二区三区四区在线观看视频| 狠狠色狠狠色综合系列| 涩涩视频在线免费看| 9色视频在线观看| 在线日韩欧美视频| 久久久www成人免费毛片麻豆| 国产视频一区二| 综合激情丁香| 国产精品美女视频网站| 亚洲一区二区三区在线| 成人免费电影网址| 成人性爱视频在线观看| 日韩三级电影免费观看| 亚洲国产精品免费| 成人av免费在线| 精品亚洲精品| 粉嫩粉嫩芽的虎白女18在线视频| 国产精品久久久精品| 91成人免费网站| 日韩av网站在线观看| 免费亚洲电影| 国产九九在线观看| 成人精品福利视频| 欧美大片在线观看| 91麻豆免费看片| 日韩电影一区| 4438x成人网全国最大| 97在线国产视频| 琪琪第一精品导航| 欧美巨大另类极品videosbest| 久久国产精品99精品国产| 天堂av一区| 欧洲综合视频| 潘金莲一级淫片aaaaa免费看| 久久99国产综合精品女同| 午夜久久福利影院| 日本aⅴ亚洲精品中文乱码| 96sao精品免费视频观看| 2023欧美最顶级a∨艳星| 久久久一本精品99久久精品| 亚洲性日韩精品一区二区| 亚洲欧美一区二区视频| 136国产福利精品导航网址| av免费在线一区| 中文字幕视频在线| 欧美做受777cos| 国产精品久久久久91| 欧美精品一区二区三区在线 | 97视频在线观看网站| 九九久久九九久久| 国产成人精品网站| 日韩大片在线观看视频| 亚洲精品视频在线观看网站| 久久裸体视频| 欧美自拍视频| 欧美激情成人动漫| 人与动性xxxxx免费视频| 中文字幕免费在线不卡| 国产精品视频yy9099| 国产亚洲欧美aaaa| 天天综合日日夜夜精品| 国产乱人伦偷精品视频不卡 | 中文字幕欧美精品在线| 欧美日韩一区二区在线 | 欧洲一区在线| 男女视频在线|